当前位置:  技术问答>linux和unix

对socket使用select(max_fd,&rd_set,&wr_set,&er_set,&timeout);当服务端断开TCP连接,客户端就会崩溃。怎么解决?谢谢

    来源: 互联网  发布时间:2015-12-09

    本文导语:  for(;;)   {   sleep(5);   printf("nconnecting to serverhost");   bzero(&server_addr,sizeof(server_addr));   server_addr.sin_family=AF_INET;     server_addr.sin_addr.s_addr = inet_addr(host_name);    server_addr.sin_port=htons(server_port);   if((socket_fd=socke...

for(;;)
  {
  sleep(5);
  printf("nconnecting to serverhost");
  bzero(&server_addr,sizeof(server_addr));
  server_addr.sin_family=AF_INET;  
  server_addr.sin_addr.s_addr = inet_addr(host_name); 
  server_addr.sin_port=htons(server_port);

  if((socket_fd=socket(AF_INET,SOCK_STREAM,0))==-1)
  {
    printf("nError openning socket");
    close(socket_fd);
continue;
  }
   
  fcntl(socket_fd, F_SETFL, O_NONBLOCK);//设为非阻塞
   
  if(connect(socket_fd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1)
  {
    printf("nError connect ...errno = %d ",errno);
    
sleep(10);
break;
  } 
  else
  {    
     break;
  }     

  }

  printf("nConnect OK...");



 while(1)

    max_fd =socket_fd+1;// 
    FD_ZERO(&rd_set);
    FD_ZERO(&wr_set);
    FD_ZERO(&er_set); 
    FD_SET(socket_fd,&rd_set); 
    FD_SET(socket_fd,&er_set);
    timeout.tv_sec=2;
    timeout.tv_usec=0;
    ret=select(max_fd,&rd_set,&wr_set,&er_set,&timeout);

    if (ret

    
 
 

您可能感兴趣的文章:

  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • (100)"断开的管道" 在Socket编程当中,如果我连续发送包,例如1000次,总会出现"断开的管道"的错误提示,请问如何解决
  • socket 断开连接如何再恢复连接
  • socket 断开
  • 客户端 socket 断开后 服务器端系统如何处理?
  • socket连接总断开?
  • 请问如何在服务器端获得 socket 断开的消息?
  • Linux下的Socket通信如何断开连接的端口从而实现重复使用该端口
  • 急问:怎么判断一个非阻塞的socket已经断开了?
  • SOCKET调用close断开连接的时候回主动发FIN ACK包吗?
  • 我断开socket服务器日志之后,服务器程序就挂死啦
  • socket问题,当客户端关闭或者实际链路断开后服务器端怎么判断?
  • 怎么知道socket连接已经断开?
  • 怎样判断socket断开并自动重连?
  • socket客户端connect服务端后,如何断开连接?
  • 如何知道socket已经断开?
  • 如何判断socket断开连接
  • 问一个socket问题,服务器不停send,客户端进入睡眠服务器会断开
  • 在linux下面,为什么TCP服务器端在客户端没有断开前推出程序会关不掉socket?
  • 请教各位:Unix环境下socket接口服务端程序为什么会经常自己断开?100分赠英雄!
  • php实现socket实现客户端和服务端数据通信源代码
  • socket客户端程序的问题
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 已和客户端连接建立的socket在客户端CTRL-C后怎么在服务器端捕捉这个错误?
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • 服务器与客户端建立socket连接,如何获得端口号.谢谢
  • python实现socket客户端和服务端简单示例
  • 客户端是linux通过socket编程实现服务器端win平台接收?
  • linux客户端程序能否和windows端的服务器程序进行socket通信?
  • socket编程中客户端绑定端口的问题,请兄弟们指点一下
  • 请问关于socket客户端因事件启动新线程的问题.高手请进
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • 我的ping程序怎么老是出现Socket operation on non-socket


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3