этот код отправляет pos игрового объекта
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
using System.Threading;
using System.Net;
using System.Text;
using System.Net.Sockets;
public class ball : MonoBehaviour
{
public GameObject zee;
Thread mThread;
public string connectionIP = "127.0.0.1";
public int connectionPort = 12345;
IPAddress localAdd;
TcpListener listener;
TcpClient client;
bool running;
string pos = "";
// Start is called before the first frame update
void Start()
{
ThreadStart ts = new ThreadStart(GetInfo);
mThread = new Thread(ts);
mThread.Start();
}
// Update is called once per frame
void Update()
{
zee.transform.position = new Vector3(zee.transform.position.x, zee.transform.position.y-0.1f, zee.transform.position.z);
pos += zee.transform.position.y.ToString();
}
public static string GetLocalIPAddress()
{
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
return ip.ToString();
}
}
throw new System.Exception("No network adapters with an IPv4 address in the system!");
}
void GetInfo()
{
localAdd = IPAddress.Parse(connectionIP);
listener = new TcpListener(IPAddress.Any, connectionPort);
listener.Start();
client = listener.AcceptTcpClient();
running = true;
while (running)
{
Connection();
}
listener.Stop();
}
void Connection()
{
NetworkStream nwStream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
string dataReceived = Encoding.UTF8.GetString(buffer, 0, bytesRead);
byte[] dane = System.Text.Encoding.ASCII.GetBytes(pos);
nwStream.Write(dane, 0, dane.Length);
if (dataReceived != null)
{
if (dataReceived == "stop")
{
running = false;
}
else
{
}
}
}
private void OnDestroy()
{
// block main thread, wait for _runnerThread to finish its job first, so we can be sure that
// _runnerThread will end before main thread end
listener.Stop();
}
}
и этот код получает его в python
import subprocess
import socket
import os
def main():
print("hello")
host, port = "127.0.0.1", 25001
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
try:
sock.connect((host, port))
print("connected")
break
except:
print("Trying To Connect")
sock.sendall("hello".encode("utf-8"))
data2 = sock.recv(1024).decode("utf-8")
data2=data2.strip('() \n').split(',')
print("pos is "+data2[0])
sock.close()
main()
проблема в том, что он печатает только первую позицию, пока в единстве я заставляю шар менять свои зелья в функции обновления. Я хочу получать позицию игрового объекта каждый раз, когда он меняет свою позицию. я попытался сделать al oop, чтобы напечатать всю строку data2, которая содержит полученные данные, но его длина только 1. поэтому я не уверен, в чем проблема