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