在写QQ中,有这种情况:你上线之后,要做的一件事就是通知你的在线好友你上线的消息的消息。我在服务器端将每个用户的socket缓存起来了。有如下代码:// 通知我所有在线的好友我上线的消息foreach (Friend f in friends){if (f.Online){Socket friendSocket = (Socket)Program.SocketTable[f.Account];FriendOnline online = new FriendOnline(CommandType.FriendOnline, request.account, ip);sends = Serialize.serialize(online);socket.SendTo(sends, friendSocket.RemoteEndPoint); }}为什么我在客户端收不到好友上线的通知!!!难道是socket.SendTo(sends, friendSocket.RemoteEndPoint); 这句没有发送到friendSocket.RemoteEndPoint吗?或者是socket的内部机理到底是怎样的?谢谢。
2 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
下面便是在C# socket 的SendTo()的使用方法
public int Send (
byte[] buffer
)
public bool SendToAsync(
SocketAsyncEventArgs e
)
qq_笑_17
TA贡献1818条经验 获得超7个赞
我建议:
1.你不要缓存Socket客户机连接,客户少无问题.假设100w连接,把你服务器也搞死了.
2.你要用P2P结构,更先进
3.客户机与服务器在需要通信时才建连接,如QQ缓存Socket客户机连接,腾迅需要几百个服务器.
- 2 回答
- 0 关注
- 522 浏览
添加回答
举报
0/150
提交
取消