网络通信聊天问题
我班有个同学写了一个聊天程序,出了点问题,我自己帮搞了好久,都搞不出来,现在发到网上,求高人帮忙看看,是什么问题这是服务端的:
bl_startup = true;
m_stateitem.ResetContent();
HANDLE h_gThread;
WSADATA wsa;
WORD wsa_res = WSAStartup(0x0101,&wsa);
int res = WSAStartup(wsa_res,&wsa);
struct sockaddr_in socket_local,socket_remote;
if(res == -1)
{
}
sListen = socket(AF_INET,SOCK_STREAM,0);
if(sListen == INVALID_SOCKET)
{
}
socket_local.sin_family = AF_INET;
socket_local.sin_port = htons(8080);
socket_local.sin_addr.S_un.S_addr = INADDR_ANY;
int bind_res = bind(sListen,(struct sockaddr*)&socket_local,sizeof(socket_local));
if(bind_res == SOCKET_ERROR)
{
}
if(listen(sListen,SOMAXCONN) == SOCKET_ERROR)
{
}
m_stateitem.AddString("服务程序启动成功");
m_startup.EnableWindow(false);
m_stop.EnableWindow(true);
int addrlen = sizeof(socket_remote);
while(true == bl_startup)
{
sClient = accept(sListen,(struct sockaddr*)&socket_remote,&addrlen);
if(sClient == INVALID_SOCKET)
{
}
h_gThread=CreateThread(NULL,0,begin_accept_thread,(LPVOID)&sClient,0,NULL);
CloseHandle(h_gThread);
}
//线程函数
DWORD WINAPI CMcchangeportDlg::begin_accept_thread(LPVOID lpPara)
{
int rec;
SOCKET sClient = *((SOCKET*)lpPara);
char buff[500];
rec = recv(sClient,buff,sizeof(buff),0);
if(rec > 0)
{
...................
send(sClient, buff, sizeof(buff), 0);
}
}
现在说说问题:当server程序启动后,如果用另外两台电脑(A,B机)各for,1000次,缶主机发送,主机接收到后进行处理后,返回给所发送的机 子,当A,B各开发for发送时,主机最多同时能接到A,B发送的四五十次数据,之后,其中有一台的发送,将会被主机不给予处理。我可能没说明白,大意就 是:A发送到50次时,B开始发送,主机这时能接收A,B所能发送的数据,但只能接到到40几次后,便不会对其中一台做出响应(即可能B机只for 到100次时,就没反应了)
请原因,即处理方式