簡體   English   中英

為什么服務器(python)和客戶端(統一的 C#)之間的 2 台計算機連接不起作用?

[英]why does the 2 computers connection between the server(python) and the client (C# in unity) does not work?

我正在嘗試從兩台計算機(一台是服務器(python),一台是客戶端(unity 和 C#))上玩我的統一游戲,但是當我嘗試連接統一控制台時,會顯示此錯誤:

“SocketException:連接嘗試失敗,因為連接方在一段時間后沒有正確響應,或者連接失敗,因為連接的主機沒有響應。”

如果我更改客戶端 IP 並在同一台計算機上運行它,它會工作

你能幫我解決這個問題嗎?

這是客戶端 c# 代碼(統一):

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 中):

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 的接受)[您已經修改了答案,現在可以了]

如果你想在 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 或 ZF5EF00ZE36514D8B89FEBC923

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM