socket 服务器给指定的客户端发消息该怎么办
socket 服务器给指定的客户端发消息该怎么处理
多个客户端之间进行通讯,通过服务器转发的形式,
现在客户端1请求向客户端2发送消息, 先把消息发送到服务器, 服务器怎么才能把消息转发到客户端2而不是转发给客 户端3或者其他人。(TCP协议下)send()函数好像不能指定发送目的地的信息。
请高手指教下该如何处理!
------解决方案--------------------
服务器端accept时有一个参数,struct sockaddr* addr,这个参数返回的就是connect的客户端的地址,包括IP地址和端口,既然知道了IP地址,两个客户端就可以直接通信。如果要通过服务端转发,服务端接收到转发信息时在发给另一端就可以了,accept时返回的就是用于通信的socket,一个客户端对应一个socket,你要保存好
------解决方案--------------------
最好的方法是:每一客户端用唯一的ID来标示, 就像QQ号一样, 在客户端连接服务器,发送自己的ID, 然后和相应产生的SOCKET进行绑定, 一个客户端向另一个客户端发送信息时,要求在数据包里包含对方的ID号。可以定义一个类型下列的数据结构对数据包进行封装:
type struct _sdata {
int sourceID;//发送者自己的ID
int destID; //接收者的ID
char datainfo[1];//数据信息
}SDATA, *PSDATA;
------解决方案--------------------
套接字啊 每个客户端的套接字是不一样的 你都说了
int send(
SOCKET s,
const char FAR* buf,
int len,
int flags
);
就用s 只是你在接受的时候要用个容器保存好每个客户端的套接字,发送的时候对应的发生
多个客户端之间进行通讯,通过服务器转发的形式,
现在客户端1请求向客户端2发送消息, 先把消息发送到服务器, 服务器怎么才能把消息转发到客户端2而不是转发给客 户端3或者其他人。(TCP协议下)send()函数好像不能指定发送目的地的信息。
请高手指教下该如何处理!
------解决方案--------------------
服务器端accept时有一个参数,struct sockaddr* addr,这个参数返回的就是connect的客户端的地址,包括IP地址和端口,既然知道了IP地址,两个客户端就可以直接通信。如果要通过服务端转发,服务端接收到转发信息时在发给另一端就可以了,accept时返回的就是用于通信的socket,一个客户端对应一个socket,你要保存好
------解决方案--------------------
最好的方法是:每一客户端用唯一的ID来标示, 就像QQ号一样, 在客户端连接服务器,发送自己的ID, 然后和相应产生的SOCKET进行绑定, 一个客户端向另一个客户端发送信息时,要求在数据包里包含对方的ID号。可以定义一个类型下列的数据结构对数据包进行封装:
type struct _sdata {
int sourceID;//发送者自己的ID
int destID; //接收者的ID
char datainfo[1];//数据信息
}SDATA, *PSDATA;
------解决方案--------------------
套接字啊 每个客户端的套接字是不一样的 你都说了
int send(
SOCKET s,
const char FAR* buf,
int len,
int flags
);
就用s 只是你在接受的时候要用个容器保存好每个客户端的套接字,发送的时候对应的发生