socket发信息
例子
以下是使用TCP / IP協議的四個最小示例程序:一臺服務器,該服務器回顯它收到的所有數據(僅為一個客戶端提供服務),以及一個使用它的客戶端。注意,服務器必須執行序列socket(), bind(),listen(),accept()(可能重復accept(),以服務一個以上的客戶端),而一個客戶端只需要在序列socket(),connect()。另請注意,服務器不在sendall()/recv()偵聽的套接字上,而是/返回的新套接字 accept()。
前兩個示例僅支持IPv4。
# 服務端 import socketHOST = '' # 符號名稱含義所有可用接口 PORT = 50007 # 任意非特權端口 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.bind((HOST, PORT))s.listen(1)conn, addr = s.accept()with conn:print('Connected by', addr)while True:data = conn.recv(1024)if not data: breakconn.sendall(data) # 客戶端 import socketHOST = 'daring.cwi.nl' # 遠程主機 可改為服務器ip地址 PORT = 50007 # 與服務器使用的端口相同 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.connect((HOST, PORT))s.sendall(b'Hello, world')data = s.recv(1024) print('Received', repr(data))接下來的兩個示例與以上兩個示例相同,但同時支持IPv4和IPv6。服務器端將監聽第一個可用的地址族(它應該監聽兩個)。在大多數支持IPv6的系統上,IPv6優先,并且服務器可能不接受IPv4流量。客戶端將嘗試連接到由于名稱解析而返回的所有地址,并將流量發送到成功連接的第一個地址。
# 服務端 import socket import sysHOST = None # 符號名稱含義所有可用接口 PORT = 50007 # 任意非特權端口 s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,socket.SOCK_STREAM, 0, socket.AI_PASSIVE):af, socktype, proto, canonname, sa = restry:s = socket.socket(af, socktype, proto)except OSError as msg:s = Nonecontinuetry:s.bind(sa)s.listen(1)except OSError as msg:s.close()s = Nonecontinuebreak if s is None:print('could not open socket')sys.exit(1) conn, addr = s.accept() with conn:print('Connected by', addr)while True:data = conn.recv(1024)if not data: breakconn.send(data) # 客戶端 import socket import sysHOST = 'daring.cwi.nl' # 遠程主機 PORT = 50007 # 與服務器使用的端口相同 s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):af, socktype, proto, canonname, sa = restry:s = socket.socket(af, socktype, proto)except OSError as msg:s = Nonecontinuetry:s.connect(sa)except OSError as msg:s.close()s = Nonecontinuebreak if s is None:print('could not open socket')sys.exit(1) with s:s.sendall(b'Hello, world')data = s.recv(1024) print('Received', repr(data))其他參考 官網python3.7.9文檔
總結
- 上一篇: 史上最详细的Linux网卡ifcfg,史
- 下一篇: pandas 日期处理