在寫QQ中,有這種情況:你上線之后,要做的一件事就是通知你的在線好友你上線的消息的消息。我在服務(wù)器端將每個(gè)用戶的socket緩存起來(lái)了。有如下代碼:// 通知我所有在線的好友我上線的消息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); 這句沒有發(fā)送到friendSocket.RemoteEndPoint嗎?或者是socket的內(nèi)部機(jī)理到底是怎樣的?謝謝。
2 回答

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

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