为什么服务器(python)和客户端(unity中的C#)之间的2台电脑连接不工作?

问题描述 投票:0回答:1

我试图从2台电脑上玩我的unity游戏(一台是服务器(python),一台是客户端(unity和C#)),但当我尝试连接时,unity控制台显示我这个错误。

"SocketException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机没有响应。"

如果我改变客户端IP,并在同一台电脑上运行它,它就会工作了

你能帮我解决这个问题吗?

这是客户端的c#代码(unity)。

socket my_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.43.95"), 7777);
        GameMaster.my_socket.Connect(endPoint);

这是服务器代码(Python).我想从2台电脑上玩我的unity游戏(一台是服务器(Python),一台是客户端(unity和unity):

import socket
my_socket = socket.socket()
my_socket.bind(('0.0.0.0', 7777))
my_socket.listen(5)
(client_socket, client_address) = my_socket.accept()
print str(client_address)+" is connected"    
python c# unity3d networking
1个回答
0
投票

除了错误的IP和端口,你不精确的什么协议,你想使用UDP或TCP?

所以你的Unity程序似乎是在TCP协议下的

我认为你在python中的定义并不好(例如,我没有看到TCP的accept)[你已经修改了你的答案,它现在好了] 。

如果你想在Python中做TCP,你有一个例子。这里

导入插座

 TCP_IP = "your IP"
 TCP_PORT = yourPort

 sock = socket.socket(socket.AF_INET, # Internet
                      socket.SOCK_STREAM) # TCP
 sock.bind((TCP_IP, TCP_PORT))
 sock.listen(1)
 conn, addr = sock.accept()
 print 'Connection address:', addr    

 while 1:
     data = conn.recv(BUFFER_SIZE)
     if not data: break
     print "received data:", data
     conn.send(data)  # echo
 conn.close()

在追求性能的同时,如果你接受一些数据的松动,我建议你选择UDP...。

你可以在网络上找到很多C#和Python的客户端服务器TCP或UDP的例子。

© www.soinside.com 2019 - 2024. All rights reserved.