各位老大们: 
我现在遇到一个很棘手的菜鸟问题!!希望大家指点一二。 
是这样的 我最近在读一个关于客户端和服务器的程序。socket连接正常,但是我从客户端往服务器发送数据包的时候,服务器却总是显示接收第0包数据,而且我想从客户端再发另一个数据包到服务器时,却显示上次发送尚未完毕, 
到底是怎么回事啊? 
希望各位老大们,多多帮帮我这初学者啊!!! 

解决方案 »

  1.   

    看看你的接受代码,大概是阻塞了~~~
    如果你设置的是block,设置下非阻塞情况下试验下
    setsockopt可以进行设置
      

  2.   

    那要怎么设置啊 在setsockopt
      

  3.   

     用setsockopt将recv的timeout设为一秒(就是SO_RCVTIMEO选项), 
            setsockopt(m_socket, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv_out, sizeof(tv_out));刚才说错了,其实它不是设置为非阻塞,而是可以将设置等待的时间在建立socket的时候,里面有一个flag,才可以设置她的属性~~
      

  4.   

    int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR* argp);                      s:一个标识套接口的描述字。
                    cmd:对套接口s的操作命令。
                    argp:指向cmd命令所带参数的指针。         当cmd的标志设为FIONBIO时,该函数就可以设置套接字的通讯模式。这时,argp指向一个无符号长整型。如允许非阻塞模式则非零,如禁止非阻塞模式则为零。刚才太不好意思了,没有注意到