Я передаю несколько данных, картинку и после текст через сокеты. При работе на локальном пк все было нормально более менее. Когда запустил приложение на разных пк(клиент и сервер), то почти все строки стали битыми.
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
While True:
# Recieve photo
data = s.recv(1000000)
image = png_bytes_2_opencv_image(data)
coords = (1,2)
# Recieve state
data = s.recv(1000000)
state = {}
try:
decoded_data = data.decode("utf-8")
state = json_.loads(decoded_data)
except Exception as e:
print(e)
IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(addr), port);
listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
listenSocket.Bind(ipPoint);
listenSocket.Listen(1);
connected = true;
Debug.Log("Сервер запущен. Ожидание подключений...");
Application.runInBackground = true;
listenerFlag = true;
startServer();
}
catch (Exception ex)
{
Debug.Log(ex.Message);
}
Socket handler = listenSocket.Accept();
while(true){
//Sending png
byte[] data_png = car_controller.PngFromCam;
handler.Send(data_png);
//Sending JSON
Dictionary<string, string> dict_data = new Dictionary<string, string>
{
["ID"] = 0.ToString(),
["CurrentSpeed"] = Math.Round(car_controller.CurrentSpeed, 1).ToString(),
["CurrentSteering"] = Math.Round(car_controller.CurrentSteering, 1).ToString()
};
string json = MiniJSON.Json.Serialize(dict_data);
Debug.Log(json);
byte[] data_json = Encoding.UTF8.GetBytes(json);
handler.Send(data_json);
}