为什么我用socket编写的客户端要等待很长时间才收到返回消息?(附代码)

senwe 2006-06-24 10:34:55
我是初学者,这段代码是从书上来的……
当我用自己的计算机作为客户端和服务器端(模拟的)时,立刻就能收到返回消息
而用在局域网(一万多台计算机)中大约要等一分钟,而且等待的时候就像没有响应一样
在广域网上更是石沉大海,没有返回消息了……

以下是主要源代码:
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);

请高人指点~~~
...全文
475 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
senwe 2006-07-03
  • 打赏
  • 举报
回复
connect()返回值是 0
……
或者谁能给一段完整的实时发送接收报文的代码?
senwe 2006-06-25
  • 打赏
  • 举报
回复
那怎样让它在广域网或很多计算机的局域网中减少等待返回报文的时间呢?
我一个同事是用Delphi写的,瞬间就得到了返回报文
WinEggDrop 2006-06-25
  • 打赏
  • 举报
回复
这是因为,默认下,如果你使用connect(),最多不能连出去超过5000个连接,你看看你的connect()是不是出现了10055错误(WSAENOBUFS).这些错误的超时应该是默认下是10多秒的,所以....
senwe 2006-06-24
  • 打赏
  • 举报
回复
设置了,服务器IP的关联变量m_strServer在编辑匡中输入
是不是因为调用socket.connect()用了很长时间?
我看到网上有些是包含Winsock2.h,我用的是包含winsock.h,这有关系吗?
Torch009 2006-06-24
  • 打赏
  • 举报
回复
服务器的IP没设置吧?在本地上能通是因为他首先找127。0。0。1;

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧