【发布时间】:2014-02-27 08:46:47
【问题描述】:
对不起,我在这里遇到了一个令人困惑的问题......
我最近在使用 Unity,并尝试制作一个简单的 TCP 服务器,该服务器可以通过其所有客户端进行广播,也可以向他自己广播,其中服务器本身就是客户端之一,例如聊天室或其他东西。
所以我确实成功了,但问题是,客户端接收到的所有数据实际上是从客户端发送的初始数据的两倍,下面是我的代码示例
public void broadcast(string data)
{
print("Broadcast");
byte[] dataByte = Encoding.ASCII.GetBytes(data);
print(ClientList.Count);
for(int x = 0; x<ClientList.Count;x++)
{
ClientList[x].Send(dataByte);
print ("something" +ClientList[x].Send(dataByte));
print ("loop");
}
}
这就是客户端接收它的方式
private void ReceiveData(IAsyncResult ar)
{
print ("ReceiveData Client");
Socket handler = (Socket)ar.AsyncState;
try
{
int x = handler.EndReceive(ar);
print("Receiving Data...");
print (x);
if (x > 0)
{
StringBuilder sb = new StringBuilder();
sb.Append(Encoding.ASCII.GetString(buffer, 0, x));
string content = sb.ToString();
print("Data Received: " + content);
//string[] data = content.Split(';');
//for (int i = 0; i < data.Length; i++)
//{
this.ProcessData(x, content, handler);
//}
sb.Remove(0, sb.Length);
handler.BeginReceive(buffer, 0, 1024, 0, new AsyncCallback(ReceiveData), handler);
}
else
{
print("Connection Closed...");
}
}
catch (Exception e)
{
print(e.Message);
}
}
我尝试发送test;this is client
结果如下
Broadcast
1
something20
ReceiveData Client
loop
Receiving data...
40
Data Received: test;this is client test; this is client"
我不知道这是什么问题或如何出现问题,我们将不胜感激。谢谢b4
【问题讨论】: