1
我很抱歉,但我有點這裏有一個令人困惑的問題......團結TCP服務器/客戶端
我最近使用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
天啊!我多麼愚蠢。非常感謝你指出了這一點。 – Diom