0
我正在做一個聊天室應用程序,併發送TCP數據包在服務器和客戶端之間進行通信。C# - 似乎一次接收兩個TCP數據包?
我有以下代碼:
string returnMessage = "[EVT]USERSUCCESS";
bytes = Encoding.ASCII.GetBytes(returnMessage);
info.WriteToStream(bytes);
foreach (ConnectionInfo con in connections)
{
info.WriteToStream(bytes);
bytes = Encoding.ASCII.GetBytes("[EVT]USERJOIN;" + username);
con.WriteToStream(bytes);
}
然而,當客戶端讀取此,響應是:
- [EVT] USERSUCCESS [EVT] USERJOIN;名稱
看起來好像它一次接收兩個數據包..?
這是我對接收的代碼:這是運行作爲一個獨立的線程
static void ServerListener()
{
while (true)
{
byte[] bytes = new byte[1024];
int numBytes = stream.Read(bytes, 0, bytes.Length);
string message = Encoding.ASCII.GetString(bytes, 0, numBytes);
if (HandleResponse(message) && !WindowHasFocus())
{
player.Play();
}
}
}
。 HandleResponse()完全正常工作。
在此先感謝!
所以添加空字節到每個數據包的結束將導致客戶端分別閱讀每一個? – Sulphate
不,您仍然需要編寫服務器代碼以將其拆分爲數據包。 – Catprog
我該怎麼做?我對此很新。 – Sulphate