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

Socket connet的一些疑问

    来源: 互联网  发布时间:2017-04-30

    本文导语:  基于TCP协议, client链接server。 client程序如下: ........ result = connect(vars->clientsocketfd,(struct sockaddr *)&vars->client,sizeof(struct sockaddr)); if( result == 0 )  return true; else if(result == -1) {     timeval    tm  ;     f...

基于TCP协议, client链接server。
client程序如下:

........
result = connect(vars->clientsocketfd,(struct sockaddr *)&vars->client,sizeof(struct sockaddr));
if( result == 0 )
 return true;
else if(result == -1)
{
    timeval    tm  ;
    fd_set     set ;
    int  len   = sizeof(int) ;
    int  error =           -1 ;
    tm.tv_sec  =            0 ;
    tm.tv_usec = timeout*1000 ;

    FD_ZERO( &set ) ;
    FD_SET(vars->clientsocketfd, &set);
    if( select((int)vars->clientsocketfd + 1 , NULL, &set, NULL, &tm) > 0)
    {
if ( getsockopt(vars->clientsocketfd, SOL_SOCKET, SO_ERROR, (char *)&error, &len) ==0 )
if(error == 0) 
return true;
    }
}
......


Server 代码

.....
if( listen(vars->serversocketfd,1) == -1)
return false;
struct sockaddr_in           clientaddr         ;
socklen_t len           =    sizeof(clientaddr) ;
char                         buffer[20]         ;
vars->clientsocketfd    =    accept(vars->serversocketfd,(struct sockaddr*)&clientaddr,&len) ;
if( vars->clientsocketfd   !=   INVALID_SOCKET  )
{
   ...........
   return true;
}
......



当client第一次连接上 server,此时可以正常通信。
但是当client端关闭socket,再次链接server端,
为什么client端还是显示连接成功?
而且都是每次走 result == -1,error== 0这个逻辑。

请问为什么会出现这个问题?









|


不是这个,我说的是你在建立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定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 我的ping程序怎么老是出现Socket operation on non-socket
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • sco unix 下输入 man socket 居然显示 man:socket not found up有分


  • 站内导航:


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

    ©2012-2021,