Python 網路程式設計之socket
阿新 • • 發佈:2018-12-26
網路程式設計:資訊傳輸一般會有兩步,一是傳送,一是接收。
socket 基礎應用,先建立一個客戶端,然後建立一個伺服器端。客戶端負責傳送訊息和接收伺服器發過來的訊息,伺服器端負責接收客戶端傳送過來的訊息和傳送訊息到客戶端。
客戶端
# 客戶端 import socket client = socket.socket() # 宣告 socket 型別,同時生成 socket 連線物件 # <socket.socket fd=496, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0> print(client) client.connect(("localhost", 7894)) # <socket.socket fd=496, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, # laddr=('127.0.0.1', 59049), raddr=('127.0.0.1', 7894)> print(client) client.send(b"Hello World!----from client") data = client.recv(1024) # 設定接收的長度,1024位元組 1K print("recv:", data) client.close()
伺服器端
# 伺服器端 import socket server = socket.socket() # <socket.socket fd=508, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0> print(server) server.bind(("localhost", 7894)) # 繫結要監聽埠 server.listen() # 監聽埠 # socket.socket fd=516, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, # laddr=('127.0.0.1', 7894)> 監聽的埠 print(server) print("等待接聽中-----") # conn 是客服端連過來而在伺服器端為其生成的一個連線例項 conn, addr = server.accept() # 等待傳入資訊 # conn =<socket.socket fd=568, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, # laddr=('127.0.0.1', 7894), raddr=('127.0.0.1', 59049)> # addr = ('127.0.0.1', 59049) 客戶端監聽的地址,從這個埠發給客戶端 print(conn, addr) print("接聽成功------") data = conn.recv(1024) # 設定接受的資訊長度 1024位元組 print("recv:", data) conn.send(data.upper()) # 設定返回給客戶端的資訊 server.close() # 預設監聽一次就退出了