我打算用winform寫一個表單,用串口接受下位機發來的資料,然后把它存在一個陣列里,通過socket通信把陣列源源不斷的發送給客戶端(unity)進行實時通信。
打開Form4后,服務端開啟,監聽客戶端。運行Unity游戲(客戶端),連接到服務端,現在兩端的連接可以連上,但是無法進行資料傳送,我認為可能是界面的發送資料函式沒發出去,或者是unity沒接收到。
Tcpserver類中定義了SendMsg方法用來發送陣列,
Form4點擊按鈕后回圈呼叫SendMsg方法進行發送資料。
P1 2 3是Form4的代碼
P4 5 Tcpserver類
P6 Unity(客戶端)





uj5u.com熱心網友回復:
Unity端接收資料的方法public void ReceiveMessage(IAsyncResult ar)
{
List<byte> _byteData = new List<byte>(); //新建一個位元組佇列
bool start = false;
try
{
//清空errormessage
Error_Message = "";
int bytesRead;
bytesRead = this._client.GetStream().EndRead(ar);
if (bytesRead < 1)
{
return;
}
else
{
for (int i = 0; i < bytesRead; i++)
{
if (start)
_byteData.Add(data[i]);
if (data[i] == 35) //如果讀取到#號,將之后位元組存入位元組佇列中
{
start = true;
}
else if (data[i] == 37) //若果讀到%號,將位元組佇列中的位元組轉化為字串存入temp中
{
if (start)
{
string temp = Encoding.ASCII.GetString(_byteData.ToArray(), 0, _byteData.Count - 1);
_byteData.Clear();
DataResolve(temp); //拆分字串,獲取X,Y,C的值
temp = ""; //temp清空,繼續尋找下一個#號
start = false;
}
}
}
this._client.GetStream().BeginRead(data, 0, System.Convert.ToInt32(this._client.ReceiveBufferSize), ReceiveMessage, null);
}
}
catch (Exception ex)
{
Error_Message = ex.Message;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/50151.html
標籤:網絡通信
