[英]How can i connect two computers with python socket?
我是新來的。 我在使用不同 wi-fi 連接的兩台計算機之間連接時遇到問題。 大約 20 秒后,我得到無法完成連接的信息:有我的代碼:服務器:
from socket import *
lista = ['computer']
s = socket(AF_INET, SOCK_STREAM)
port = 21312
s.bind(('my ipv4', port))
s.listen(5)
while True:
for i in range (0, len(lista)):
a = str(lista[i]).encode()
c, addr = s.accept()
print("CONNECTION WITH",addr)
c.send(a)
print(a)
c.close()
客戶:
import socket
from socket import *
port = 21312
while True:
s = socket(AF_INET,SOCK_STREAM)
s.connect(('my ipv4', port))
odebrana = (s.recv(1024))
decoded = odebrana.decode()
print(decoded)
s.close()
所以我在使用python sockets在兩台計算機之間發送圖像文件時遇到了類似的問題。 我通過以下方式解決了這個問題:
注意: server.py應該在一台計算機上, client.py應該在另一台計算機上。
服務器.py
import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
print(host)
server.bind((host, 12000))
server.listen()
client_socket, client_address = server.accept()
file = open('server_image.jpg','wb')
image_chunk = client_socket.recv(2048)
while image_chunk:
file.write(image_chunk)
image_chunk = client_socket.recv(2048)
file.close()
client_socket.close()
客戶端.py
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # AF_INET = IP, SOCK_STREAM = TCP
server_host = 'LAPTOP-1231' # Replace this hostname with hostname printed in server.py
client.connect((server_host, 12000)) # 127.0.0.1
file = open('That_Sinking_Feeling_27.jpg', 'rb')
image_data = file.read(2048)
while image_data:
client.send(image_data)
image_data = file.read(2048)
file.close()
client.close()
現在您應該將圖像添加到client.py所在的目錄中,以便您可以將其發送到另一台計算機(服務器)。 將其重命名為img.jpg
然后,您需要在另一台計算機上運行server.py 。 它將在終端中打印hostname
。 然后復制該hostname
並將其粘貼到client.py (server_host = hostname_from_server)
然后運行client.py
最后將圖像傳輸到新計算機(服務器)
您可能會遇到問題,因為您的服務器位於網絡地址轉換器 (NAT) 后面。 這樣,您的客戶端無法直接使用服務器的 IP,因為它無法訪問。 有幾種方法可以解決它。
免責聲明:我大約 15 年沒有使用過 hamachi,但由於以下評論之一而剛剛經歷了這個過程。
似乎您可以創建一個帳戶,然后一旦打開它,您應該會看到您的 v4 和 v6 地址,如下所示:
突出顯示的是我的 v4 地址。 我懷疑您需要創建一個網絡,將兩台 PC 加入同一網絡,然后使用 hamachi 的 IP 模擬行為,就好像它們通過 LAN 連接一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.