您好,麻烦帮忙解释一下关于C# socket 的SendTo()方法

在写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的内部机理到底是怎样的?
谢谢。

慕慕森
浏览 523回答 2
2回答

慕桂英3389331

下面便是在C# socket 的SendTo()的使用方法public int Send (byte[] buffer)public bool SendToAsync(SocketAsyncEventArgs e)

qq_笑_17

我建议:1.你不要缓存Socket客户机连接,客户少无问题.假设100w连接,把你服务器也搞死了.2.你要用P2P结构,更先进3.客户机与服务器在需要通信时才建连接,如QQ缓存Socket客户机连接,腾迅需要几百个服务器.
打开App,查看更多内容
随时随地看视频慕课网APP