【问题标题】:Unity Tcpclient connect to python socket server only in local but not in AWS(python server)Unity Tcpclient 仅在本地连接到 python 套接字服务器,但在 AWS(python 服务器)中不连接
【发布时间】:2022-11-19 00:34:25
【问题描述】:

我有如下的 python 服务器代码。

serverSocket = socket(AF_INET, SOCK_STREAM)
serverPort = 5000
serverSocket.bind(('aws ec2 private ip', serverPort))
serverSocket.listen(1)
print('server listening')

clientSocket, addr = serverSocket.accept()
print('Connection from ', addr[0])

...

我也有如下所示的 C# 客户端代码。

    public void ConnectToServer()
    {
        try
        {
            clientSocket = new TcpClient();
            clientSocket.Connect("aws ec2 public ip", 5000);
            stream = clientSocket.GetStream();
            Debug.Log("server connected");
        }
        
        catch (SocketException e)
        {
            Debug.LogError(e);
        }
    }

...

这些代码在本地环境中工作。 但是当我在 AWS ec2 上上传 python 服务器代码时,unity 脚本(在我的电脑中)不起作用。

它显示错误

ystem.Net.Sockets.SocketException (0x80004005): 连接被拒绝 在 System.Net.Sockets.TcpClient.Connect(System.String 主机名,System.Int32 端口)[0x0019d] 在 <2fe115660d9c47728edff248f3625297>:0 在 SocketClient.ConnectToServer () [0x0000b] 中 ...

所以,我像下面这样测试 python 客户端代码。

from socket import *

Host = 'aws ec2 public ip'
Port = 5000

clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((Host, Port))

...

它有效...服务器打印“来自“我的 ip”的连接” 因此,这不是防火墙的问题,也不是 AWS 上的设置问题。

我的统一代码有什么问题......

服务器(ec2)python版本是3.7.10

unity 版本是 2021.3.9f1, 2021.3.11f1(我测试了这两个版本) 操作系统 Mac 蒙特雷 12.6

【问题讨论】:

    标签: python c# unity3d sockets amazon-ec2


    【解决方案1】:

    作为主机的“aws ec2 public ip”在做什么?这看起来不像一个域。 python 的工作方式可能不同,您认为 c# tcpclients 可以弄清楚这意味着什么,但我认为他们做不到。我可能完全错了,但如果你能在一个几乎肯定不属于你的空间的域上托管服务器,我会感到惊讶。

    【讨论】:

      猜你喜欢
      • 2021-02-11
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      • 1970-01-01
      相关资源
      最近更新 更多