Итак, вчера я работал над Raspberry Pi, разговаривающим с Unity (Python 2.7 на Pi, Unity 2017), затем карта памяти вышла из строя, и мне пришлось создать новую.Новая установка - это Python 3.5 и тот же Unity, что и раньше.Код, который я написал, я думаю, примерно такой же, хотя с устранением неполадок он немного изменился (операторы печати изменились и т. Д. Для 3.5).В любом случае я получаю сообщение об ошибке со стороны Unity о том, что подключенная сторона не ответила должным образом через некоторое время.Я пропинговал IP-адрес и сокет с ПК, а также с других компьютеров, и он доступен, но только приложение Unity не будет взаимодействовать с Pi-сервером.Может кто-нибудь увидеть, где я запутался в своем коде?Брандмауэр отключен на ПК, и IP-адреса / адреса портов для Pi указаны правильно.
Python на Raspberry Pi
import socket
import sys
backlog = 1
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('192.168.3.232', 12345))
s.listen(1)
while True:
print ('waiting for a connection')
connection, client_address = s.accept()
try:
print ('connection from', client_address)
while True:
data = connection.recv(16)
print ('received "%s"' % data)
if data:
print ('sending data back to the client')
connection.sendall(data)
else:
print ('no more data from', client_address)
break
finally:
print("closing socket")
cient.close()
s.close()
C # на Unity
using UnityEngine;
using System.Collections;
using System;
using System.IO;
using System.Net.Sockets;
public class ClientSocket : MonoBehaviour {
bool socketReady = false;
TcpClient mySocket;
public NetworkStream theStream;
StreamWriter theWriter;
StreamReader theReader;
public String Host = "192.168.3.232";
public Int32 Port = 12345;
void Start() {
setupSocket ();
}
public void setupSocket() { // Socket setup here
try {
mySocket = new TcpClient(Host, Port);
theStream = mySocket.GetStream();
theWriter = new StreamWriter(theStream);
theReader = new StreamReader(theStream);
socketReady = true;
}
catch (Exception e) {
Debug.Log("Socket error:" + e); // catch any exceptions
}
}
Ошибка с консоли Unity: ошибка сокета: System.Net.Sockets.SocketException: попытка подключения не удалась, поскольку подключенная сторона не ответила должным образом через определенный период времени, или не удалось установить соединение, так какподключенный хост не смог ответить.