我现在连接了几个客户端,OnReceive()触发后,怎样知道是哪个客户端发来的数据呢?void CSockDlg::OnReceive()
{
char *pbuf = new char[1025];
int iBufSize = 1024;
int iRcvd; //接受数据
iRcvd = m_sConnectSocket[ClientNum].Receive(pbuf,iBufSize);//服务器
}
{
char *pbuf = new char[1025];
int iBufSize = 1024;
int iRcvd; //接受数据
iRcvd = m_sConnectSocket[ClientNum].Receive(pbuf,iBufSize);//服务器
}
包加标识到是能解决我的问题。另外,一楼能不能具体点啊,我新手,完全没看明白.
3楼老大,我就是保存起来的,但accept保存起来的socket跟新收到的客户端怎么对应?我这里的应用是每个客户端随时都有可能发数据到服务器.
m_sListenSocket.Accept(m_sConnectSocket_R[clientNum]);//有新连接
i = sizeof(sockaddr_in);
m_sConnectSocket_R[clientNum].GetPeerName((SOCKADDR*)&ClientAddr,&i);//得到IP,PORT
clientNum++;//连接上的客户端计数另外追回个问题:我这样的做法来连接多个客户端,应该没有什么问题吧?多开几个线程是不是更好些?有实例吗,正如大家看到的那颗绿三角,我新手。
谢谢!问题解决了,我重新多加点分给大家。
typedef struct tagCLIENT_DATA
{
SOCKET socket ;
char UserName[14];
char PassWord[14];
}CLIENT_DATA;连接成功后,client 给 server发个包,告诉server自己的名字和密码
然后server填充好这个结构体,以后接收的时候不就知道了吗实现3楼的想法