我用socket编写了一个基于TCP/IP协议的服务器程序,来连接客户端。程序在别人的电脑上可以正常运行,可是在我的电脑上运行到cThread->c_sockConn=accept(cThread->c_sockSrv,(sockaddr*)&cThread->c_addrSrv,&(cThread->c_addrlen));地方时就卡在这了,等了7、8分钟也连不上。我的端口和客户端设的是一致的,IP也是正常的,上网没有问题。请问各位高手这是什么问题?如何处理?

解决方案 »

  1.   

    accept本来就是阻塞函数,如果没有客户端主动connnect的话,会一直阻塞在这个函数,
      

  2.   

    accept本来就是阻塞函数,如果没有客户端主动connnect的话,会一直阻塞在这个函数, 
     
      

  3.   

    c_sockSrv=socket(AF_INET,SOCK_STREAM,0); //创建套接字
    bind(concentrator.c_sockSrv,(sockaddr*)&concentrator.c_addrSrv,concentrator.c_addrlen);//绑定套接字
    listen(concentrator.c_sockSrv,5);侦听套接字
    以上三步都是正确的,我通过调试可以看到。
    c_sockConn=accept(c_sockSrv,(sockaddr*)&c_addrSrv,&c_addrlen);
    就是accept()地方死在那了?这是为什么呢?高手指点一下吧!
      

  4.   

    上面说的即是:
    一般把 accept 放在 另外一个线程里面,你就不觉得会卡了.