Я пытаюсь использовать соединения Socket для отправки данных из моего скрипта python (Python 3.6.3) в PyCharm в мой скрипт C # в Unity3D.
Что-то очень похожее на: https://www.youtube.com/watch?v=eI3YRluluR4
Следуя документации , приведенный ниже скрипт должен хорошо работать
Python-скрипт :
import socket
host, port = "127.0.0.1", 25001
data = "hello"
# SOCK_STREAM means a TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((host, port))
sock.sendall(data.encode("utf-8"))
data = sock.recv(1024).decode("utf-8")
print(data)
finally:
sock.close()
C # скрипт :
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using UnityEngine;
using System.Threading;
public class networkCon : MonoBehaviour
{
Thread mThread;
public string connectionIP = "127.0.0.1";
public int connectionPort = 25001;
IPAddress localAdd;
TcpListener listener;
TcpClient client;
Vector3 pos = Vector3.zero;
bool running;
private void Start()
{
ThreadStart ts = new ThreadStart(GetInfo);
mThread = new Thread(ts);
mThread.Start();
}
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);
if (dataReceived != null)
{
if (dataReceived == "stop")
{
running = false;
}
else
{
pos = 10f * StringToVector3(dataReceived);
print("moved");
nwStream.Write(buffer, 0, bytesRead);
}
}
}
Однако при запуске скрипта Python я продолжаю получать:
строка 11, в
sock.connect ((хост, порт))
ConnectionRefusedError: [WinError 10061] Невозможно установить соединение, так как целевой компьютер активно отказал в этом.
- Сетевой брандмауэр домена отключен
- Брандмауэр частной сети выключен
- Брандмауэр общедоступной сети выключен
Подобный вопрос имеет такой ответ, однако я не думаю, что это применимо в моем случае. Может ли быть какая-то настройка из редактора PyCharm, которую нужно изменить?
Как я могу решить эту проблему?