Сокет соединение с использованием Python становится «активно отказано» - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь использовать соединения 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, которую нужно изменить?

enter image description here

Как я могу решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...