我是初学者,这段代码是从书上来的……
当我用自己的计算机作为客户端和服务器端(模拟的)时,立刻就能收到返回消息
而用在局域网(一万多台计算机)中大约要等一分钟,而且等待的时候就像没有响应一样
在广域网上更是石沉大海,没有返回消息了……以下是主要源代码:
HICON m_hIcon;
SOCKET m_hSocket;
SOCKADDR_IN m_addr; m_addr.sin_family = AF_INET;
m_addr.sin_addr.S_un.S_addr = inet_addr(m_strServer.GetBuffer(0));
m_addr.sin_port = htons(m_nPort); int ret = 0;
int error = 0;
ret = connect(m_hSocket, (LPSOCKADDR)&m_addr, sizeof(m_addr));//连接
if(ret == SOCKET_ERROR){
TRACE("Connect Error: %d \n", (error = WSAGetLastError()));
return ;
}
CString str;
str = m_strUser;
char* buf = str.GetBuffer(0);
ret = send(m_hSocket, buf, str.GetLength(), 0);//发送 char buff[256];
ret = recv(m_hSocket, buff, 256, 0);//接收 buff[ret] = '\0';
AfxMessageBox(buff);请高人指点~~~

解决方案 »

  1.   

    设置了,服务器IP的关联变量m_strServer在编辑匡中输入
    是不是因为调用socket.connect()用了很长时间?
    我看到网上有些是包含Winsock2.h,我用的是包含winsock.h,这有关系吗?
      

  2.   

    这是因为,默认下,如果你使用connect(),最多不能连出去超过5000个连接,你看看你的connect()是不是出现了10055错误(WSAENOBUFS).这些错误的超时应该是默认下是10多秒的,所以....
      

  3.   

    那怎样让它在广域网或很多计算机的局域网中减少等待返回报文的时间呢?
    我一个同事是用Delphi写的,瞬间就得到了返回报文
      

  4.   

    connect()返回值是 0
    ……
    或者谁能给一段完整的实时发送接收报文的代码?