【发布时间】: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