這是服務器程序簡單的Python網絡問題
# Echo server program
import socket
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data: break
conn.sendall(data)
conn.close()
現在,我在想,如果我使用的端口是我們說的是50007,我的朋友,誰是一個單向的計算機要使用客戶端程序才能連接到我。那麼他是否也必須開放50007端口?你知道,爲了讓他連接到我。
這裏是BTW客戶端程序:
import socket
HOST = 'daring.cwi.nl' # The remote host
PORT = 50007 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()
print('Received', repr(data)
是的,任何兩個機器在一個特定的端口進行通信必須打開監聽端口並在防火牆分別發送數據 – avasal
客戶端不一定需要打開端口號50007,也可以使用其他端口號連接服務器。唯一的問題是服務器必須打開端口號。 50007在它的邊。閱讀這篇文章的細節。 https://stackoverflow.com/questions/21827790/selecting-random-port-on-a-remote-hosthttps://stackoverflow.com/questions/21827790/selecting-random-port-on-a-remote-host –