Python--網絡編程-----socket代碼實例
阿新 • • 發佈:2018-04-12
OS 你好 oca 輸入 ont not .get net 客戶
一、基本socket例子
服務端:
1 import socket 2 3 HOST = ‘‘ 4 PORT = 50007 5 6 sock_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 sock_server.bind((HOST, PORT)) 8 9 sock_server.listen(1) 10 conn, addr = sock_server.accept() 11 12 with conn: 13 print(‘Connected by‘, addr) 14 whileTrue: 15 data = conn.recv(1024) 16 if not data: 17 break 18 conn.sendall(data)
客戶端:
1 import socket 2 3 HOST = ‘localhost‘ 4 PORT = 50007 5 6 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 client.connect((HOST, PORT)) 8 client.sendall(b‘Hello, world‘) 9 10 data = client.recv(1024) 11 12 print(‘Received‘, data)
先運行服務端,再運行客戶端,客戶端運行結果為:
1 Received b‘Hello, world‘
二、循環收發數據
服務端:
1 import socket 2 3 HOST = ‘‘ 4 PORT = 50007 5 6 sock_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 sock_server.bind((HOST, PORT)) 8 9 sock_server.listen(1)10 conn, addr = sock_server.accept() 11 12 with conn: 13 print(‘Connected by‘, addr) 14 while True: 15 data = conn.recv(1024) 16 print("server recv:", conn.getpeername(), data.decode()) 17 if not data: 18 break 19 conn.sendall(data)
客戶端:
1 import socket 2 3 HOST = ‘localhost‘ 4 PORT = 50007 5 6 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 client.connect((HOST, PORT)) 8 9 while True: 10 msg = input(">>>:").strip() 11 if len(msg) == 0: 12 continue 13 client.sendall(msg.encode()) 14 15 data = client.recv(1024) 16 17 print(‘Received‘, data.decode())
先運行服務端,在運行客戶端,依次在客戶端輸入:
hi、你好、學習python,
客戶端運行結果為:
1 >>>:hi 2 Received hi 3 >>>:你好 4 Received 你好 5 >>>:學習python 6 Received 學習python 7 >>>:
服務端運行結果為:
1 Connected by (‘127.0.0.1‘, 57473) 2 server recv: (‘127.0.0.1‘, 57473) hi 3 server recv: (‘127.0.0.1‘, 57473) 你好 4 server recv: (‘127.0.0.1‘, 57473) 學習python
三、簡單聊天軟件
服務端
1 import socket 2 3 HOST = ‘‘ 4 PORT = 50007 5 6 sock_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 sock_server.bind((HOST, PORT)) 8 9 sock_server.listen(1) 10 conn, addr = sock_server.accept() 11 12 with conn: 13 print(‘Connected by‘, addr) 14 while True: 15 data = conn.recv(1024) 16 print("server recv:", conn.getpeername(), data.decode()) 17 if not data: 18 break 19 20 response = input(">>>:").strip() 21 conn.send(response.encode()) 22 print("send to alex:", response)
客戶端
1 import socket 2 3 HOST = ‘localhost‘ 4 PORT = 50007 5 6 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 client.connect((HOST, PORT)) 8 9 while True: 10 msg = input(">>>:").strip() 11 if len(msg) == 0: 12 continue 13 client.sendall(msg.encode()) 14 15 data = client.recv(1024) 16 17 print(‘Received‘, data.decode())
先運行服務端,再運行客戶端,
客戶端運行結果為:
1 >>>:Hi 2 Received hey 3 >>>:剛強 4 Received alex 5 >>>:egon在嗎 6 Received 不在 7 >>>:哈哈 8 Received 哈哈 9 >>>:
服務端運行結果為:
1 Connected by (‘127.0.0.1‘, 57682) 2 server recv: (‘127.0.0.1‘, 57682) Hi 3 >>>:hey 4 send to alex: hey 5 server recv: (‘127.0.0.1‘, 57682) 剛強 6 >>>:alex 7 send to alex: alex 8 server recv: (‘127.0.0.1‘, 57682) egon在嗎 9 >>>:不在 10 send to alex: 不在 11 server recv: (‘127.0.0.1‘, 57682) 哈哈 12 >>>:哈哈 13 send to alex: 哈哈
可以看出嗎,以上代碼能夠實現簡單的聊天功能
Python--網絡編程-----socket代碼實例