网络编程碰到的关于套接字的问题,请帮忙看看!

txhby0395 2005-07-28 06:16:33
有一个服务器端为A,有B、C、D三个客户端,现在我在服务器A端侦听了6800端口,等待客户端来进行连接,假如现在三个客户端B、C、D都已经连接到了服务器端,并且都向服务器发送数据,服务器端如何判断是哪个客户端发来的数据。下面是部分代码,它只能接收最近连接到服务器端的客户端发来的数据!
UINT RecvGprsTcpPro(LPVOID lpParam)//客户端连接处理线程
{
int err=0;
int recvLen=0;
CDlg_TcpServer* pDlg=(CDlg_TcpServer*)lpParam;
SOCKADDR_IN addrGprsTcpClient;
int len=sizeof(SOCKADDR);
char recvBuf[MAX_PACK_LEN]={0};
while (b_IsRun_GprsTcp)
{
pDlg->m_GprsTcpClient=WSAAccept(pDlg->m_GprsTcpServer,(SOCKADDR*)&addrGprsTcpClient,&len,NULL,0);
char gprstcp_client[25]={0};
sprintf(gprstcp_client,"%s:%d",inet_ntoa(addrGprsTcpClient.sin_addr),ntohs(addrGprsTcpClient.sin_port));
pDlg->SplitIpPack_ClientInfo(gprstcp_client);
WSAAsyncSelect(pDlg->m_GprsTcpClient,pDlg->m_hWnd,UM_GPRSTCP_SERVER,FD_CLOSE|FD_READ|FD_WRITE);
Sleep(2);
}
return 0;

}
void CDlg_TcpServer::OnGprsTcpServer(WPARAM wParam,LPARAM lParam)//网络事件处理函数
{
switch(LOWORD(lParam))
{
case FD_CLOSE:
AfxMessageBox("FD_CLOSE!");
break;
case FD_READ:
AfxMessageBox("FD_READ!");
break;
case FD_WRITE:
AfxMessageBox("FD_WRITE!");
break;
}
}
...全文
110 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
txhby0395 2005-08-10
谢谢楼上的回答,我看了一个网友给我的一个多线程下载的程序,很好的解决了上面的问题!
回复
yingpf 2005-07-30
服务器一般要管理多个客户端连接,你可以在服务器端用一个链表来管理,连接进来就加到链表
这样你就可以区别哪个客户端
回复
wrui 2005-07-30
由于服务器accept()之后,重新产生一个SOCKET用于收发数据,所以和B,C,D收发数据的套节子都不一样,就很好判断了
回复
pp_hotel 2005-07-29
pDlg->m_GprsTcpClient=WSAAccept(pDlg->m_GprsTcpServer,(SOCKADDR*)&addrGprsTcpClient,&len,NULL,0);

感觉应该是新的连接覆盖了现有的连接,所以只能接收到新的客户端的数据.

建议将成员m_GprsTcpClient改为数组
回复
softrain 2005-07-29
对你的SOCKET标识即可,不同客户端对应不同的SOCKET。
回复
windcsn 2005-07-29
有两种办法:
1。不同的CLIENT连接的时候有不同的ACCEPT SOCKET,所以这本身就标识了不同的CLIENT,因为其地址不同/
2.在你发送的应用数据中增加地址信息。
回复
oyljerry 2005-07-29
把所有的连上的客户端信息保存到一个数组等中
回复
nuaawenlin 2005-07-29
不同的socket就可以了
回复
windcsn 2005-07-29
为不同的CLIENT开不同的套节子
回复
oyljerry 2005-07-29
通过客户端不同的socket来区分好了
回复
netgm 2005-07-28
保存一个socket 再加点识别信息就行了
收信息需要连带标识进来.

void CDlg_TcpServer::OnGprsTcpServer(WPARAM wParam,LPARAM lParam)//网络事件处理
这样看你能参数怎么.弄了
回复
相关推荐
发帖
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
帖子事件
创建了帖子
2005-07-28 06:16
社区公告
暂无公告