我试图从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"
除了错误的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的例子。