在寫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); }}為什么我在客戶端收不到好友上線的通知?。。‰y道是socket.SendTo(sends, friendSocket.RemoteEndPoint); 這句沒有發(fā)送到friendSocket.RemoteEndPoint嗎?或者是socket的內(nèi)部機理到底是怎樣的?謝謝。
2 回答

慕桂英3389331
TA貢獻2036條經(jīng)驗 獲得超8個贊
下面便是在C# socket 的SendTo()的使用方法
public int Send (
byte[] buffer
)
public bool SendToAsync(
SocketAsyncEventArgs e
)

qq_笑_17
TA貢獻1818條經(jīng)驗 獲得超7個贊
我建議:
1.你不要緩存Socket客戶機連接,客戶少無問題.假設(shè)100w連接,把你服務器也搞死了.
2.你要用P2P結(jié)構(gòu),更先進
3.客戶機與服務器在需要通信時才建連接,如QQ緩存Socket客戶機連接,騰迅需要幾百個服務器.
- 2 回答
- 0 關(guān)注
- 578 瀏覽
添加回答
舉報
0/150
提交
取消