该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

一下客户端:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define MAXDATASIZE 256

#define SERVPORT 4444

#define STDIN 0

int main(void){

int sockfd;

int recvbytes;

char buf[MAXDATASIZE];

char *str;

char name[MAXDATASIZE];

char send_str[MAXDATASIZE];

struct sockaddr_in serv_addr;

fd_set rfd_set,wfd_set,efd_set;

struct timeval timeout;

int ret;

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){

perror("socket");

exit(1);

}

bzero(&serv_addr,sizeof(struct sockaddr_in));

serv_addr.sin_family =AF_INET;

serv_addr.sin_port=htons(SERVPORT);

inet_aton("127.0.0.1",&serv_addr.sin_addr);

/* serv_addr.sin_addr.s_addr=inet_addr("192.168.1.107");*/

if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)

{

perror("connect");

exit(1);

}

fcntl(sockfd,F_SETFD,O_NONBLOCK);

printf("要聊天首先输入你的名字:");

scanf("%s",name);

name[strlen(name)]='\0';

printf("%s:",name);

fflush(stdout);

send(sockfd,name,strlen(name),0);

while(1){

FD_ZERO(&rfd_set);

FD_ZERO(&wfd_set);

FD_ZERO(&efd_set);

FD_SET(STDIN,&rfd_set);

FD_SET(sockfd,&rfd_set);

FD_SET(sockfd,&wfd_set);

FD_SET(sockfd,&efd_set);

timeout.tv_sec =5;

timeout.tv_usec =0;

ret =select(sockfd+1,&rfd_set,&wfd_set,&efd_set,&timeout);

if(ret ==0){

continue;

}

if(ret<0){

perror("select error:");

exit(-1);

}

if(FD_ISSET(STDIN,&rfd_set)){

fgets(send_str,256,stdin);

send_str[strlen(send_str)-1]='\0';

if(strncmp("quit",send_str,4)==0);

{

close(sockfd);

exit(0);

}

send(sockfd,send_str,strlen(send_str),0);

}

if(FD_ISSET(sockfd,&rfd_set))

{

recvbytes=recv(sockfd,buf,MAXDATASIZE,0);

if(recvbytes==0)

{

close(sockfd);

exit(0);

}

buf[recvbytes]='\0';

printf("Server:%s\n",buf);

printf("%s:",name);

fflush(stdout);

}

if(FD_ISSET(sockfd,&efd_set))

{

close(sockfd);

exit(0);

}

}

}

linux 非阻塞 socket,linux 非阻塞式socket编程求助。。相关推荐

  1. python3socket非阻塞在linux里无效_Linux下socket设置为非阻塞方式和fcntl系统调用

    用以下方法将socket设置为非阻塞方式 int flags = fcntl(socket, F_GETFL, 0); fcntl(socket, F_SETFL, flags | O_NONBLOC ...

  2. Linux下Socket通信中非阻塞connect、select、recv 和 recvfrom、send和sendto大致讲解,附带非租塞connect代码、MSG_NOSIGNAL

    linux中send函数MSG_NOSIGNAL异常消息 在服务器端用ctrl+c 来结束服务器接收进程来模拟服务器宕机的情况,结束服务 socket 进程之后,服务端自然关闭进程,可是 client ...

  3. linux socket write()函数阻塞卡住线程问题(线程无法结束)write()非阻塞代码

    文章目录 1.参考文章:C++网络通信中write和read的为什么会阻塞 [2.参考文章:网络编程(24)-- linux中write和read函数的阻塞试验](https://blog.csdn. ...

  4. Linux IO - 同步,异步,阻塞,非阻塞

    From:http://blog.csdn.net/historyasamirror/article/details/5778378 同步/异步,阻塞/非阻塞概念深度解析:http://blog.cs ...

  5. linux非阻塞输入函数,Linux fcntl函数设置阻塞与非阻塞

    转自http://www.cnblogs.com/xuyh/p/3273082.html 用命令F_GETFL和F_SETFL设置文件标志,比如阻塞与非阻塞 F_SETFL     设置给arg描述符 ...

  6. Linux网络编程 | IO模型 :阻塞IO、非阻塞IO、信号驱动IO、异步IO、多路复用IO

    目录 IO模型 阻塞与非阻塞 同步与异步 阻塞IO 非阻塞IO 信号驱动IO 多路复用IO 异步IO IO模型 根据各自的特性不同,IO模型被分为阻塞IO.非阻塞IO.信号驱动IO.异步IO.多路复用 ...

  7. Socket 实现非阻塞式多线程文件传输(jpg mov 等各种格式)

    Socket 基础 非阻塞式TCP socket 实现文件传输, 实测 传输5M的jpg , 30M的 NEF(单反原图) 以及 1G以上的mov文件,均正常接收 客户端可多开,服务器多线程实现服务器 ...

  8. Socket 基础 非阻塞式TCP socket,实现文件传输jpg,mov等格式

    Socket 基础 非阻塞式TCP socket 实现文件传输, 实测 传输5M的jpg , 30M的 NEF(单反原图) 以及 1G以上的mov文件,均正常接收 客户端可多开,服务器多线程实现服务器 ...

  9. 详解Linux驱动技术(五) _设备阻塞/非阻塞读写

    在Linux驱动程序编写过程中,设备阻塞/非阻塞读写是一种非常重要的技术.它可以实现高效的数据传输和事件处理,提高系统的性能和响应速度.在本文中,我们将深入探讨Linux驱动技术(五) _设备阻塞/非 ...

  10. Linux下同步模式、异步模式、阻塞调用、非阻塞调用总结

    同步和异步:与消息的通知机制有关. 本质区别 现实例子 同步模式 由处理消息者自己去等待消息是否被触发 我去银行办理业务,选择排队等,排到头了就办理. 异步模式 由触发机制来通知处理消息者 我去银行办 ...

最新文章

  1. ARM指令集 VS Thumb指令集
  2. CosmoMC第一次测试
  3. J.U.C atomic 数组,字段原子操作
  4. java中删除node节点_[Java]LeetCode237. 删除链表中的节点 | Delete Node in a Linked List
  5. android关键应用程序,安卓开发:Android应用程序的四个关键点
  6. jsf集成spring_Spring和JSF集成:国际化和本地化
  7. 利用GDB进行远程调试
  8. box2d 计算下一帧的位置/角度
  9. Redis基本操作练习
  10. 【前端】书签应用开发总结
  11. xshell中进入PLSQL命令不能使用方向键和退格键的做法(输入后显示乱码)
  12. 离散数学及其应用傅彦pdf_离散数学及其应用 傅彦 等 高等教育出版社
  13. system.gc()和-XX:+DisableExplicitGC启动参数,以及DirectByteBuffer的内存释放
  14. Dell 服务器阵列扩容【经验分享(转)】
  15. 处理:‘IplImage’ does not name a type; did you mean ‘image’?
  16. 历史上水平最高的三十首七律
  17. 如何删除电脑计算机用户账户,怎么删除电脑账户密码 如何删除电脑开机账户密码...
  18. 校招——2021多益网络软件开发笔试和面试
  19. MINIUI基本学习笔记
  20. NVIDIA vGPU vApps/vWS/vCS适配GPU版本介绍

热门文章

  1. 【学习笔记】线性代数全家桶(在编程竞赛中的应用)
  2. luogu P1231 教辅的组成(建图、拆点、最大流)
  3. 邻接表存储(链式前向星)
  4. mysql font zhushi_关于在mysql front中使用注释符报错的问题
  5. 10、Ktor学习-运行程序和基础架构;
  6. 微信小程序城市定位(百度地图API)
  7. C++ 对引用的深入理解
  8. 轻松了解Kubernetes认证功能
  9. MongoDB 维护Replica Set
  10. transmission Linux(debian)下的BT下载客户端安装