Я разрабатываю TcpClient с Unity3D.
Есть проблема.
if (length == Marshal.SizeOf(typeof(BATTLE_CHARACTER_DATA_GROUP_SEND))+1)
{
BATTLE_CHARACTER_DATA_GROUP_SEND bcdgs = new BATTLE_CHARACTER_DATA_GROUP_SEND();
bcdgs.Deserialize(ref bytes);
Debug.Log("bcdgs data Size : " + bcdgs.data_size);
StartCoroutine(PlayerObjectCreate(bcdgs));
}
Если вы попытаетесь создать объект mainThread в приведенном выше коде, но запустите StartCoroutine, он отправит значение разъединения клиента «0» на сторону сервера.
Что не так с моим кодом?
Ниже приведены полные источники.
пожалуйста.
private void ConnectToTcpServer()
{
try
{
clientReceiveThread = new Thread(new ThreadStart(ListenForData));
clientReceiveThread.IsBackground = true;
clientReceiveThread.Start();
}
catch (Exception e)
{
Debug.Log("On Client Connect Exception " + e);
}
}
private void ListenForData()
{
try
{
socketConnection = new TcpClient("192.168.235.128", 53390);
if (socketConnection.Connected)
{
ServerConnected = true;
Debug.Log("Connected!!!");
}
else
{
ServerConnected = false;
Debug.Log("Not Connected!!!");
}
while (true)
{
using (NetworkStream stream = socketConnection.GetStream())
{
int length;
byte[] bytes = new byte[Marshal.SizeOf(typeof(BATTLE_CHARACTER_DATA_GROUP_SEND))+1];
while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
{
Debug.Log("length : " + length);
if (length == Marshal.SizeOf(typeof(BATTLE_CHARACTER_DATA_GROUP_SEND))+1)
{
BATTLE_CHARACTER_DATA_GROUP_SEND bcdgs = new BATTLE_CHARACTER_DATA_GROUP_SEND();
bcdgs.Deserialize(ref bytes);
Debug.Log("bcdgs data Size : " + bcdgs.data_size);
StartCoroutine(PlayerObjectCreate(bcdgs));
}
}
}
}
}
catch (SocketException socketException)
{
Debug.Log("Socket Exception : " + socketException.ToString());
}
}