1 import socket 2 3 client = socket.socket() 4 client.connect(('localhost',3001)) 5 6 client.send(b'hhhh') 7 data = client.recv(1024) 8 print('recv:',data) 9 10 client.close()
1 客戶端結果 2 >>> recv: b'HHHH'
1 import socket 2 3 server = socket.socket() 4 5 server.bind(('localhost',3001)) #綁定要監聽端口 6 server.listen() #監聽 7 8 print('開始等待數據....') 9 10 #conn表示客戶端鏈接到服務端生成的一個鏈接實例 11 conn,addr = server.accept() #等待數據 12 13 print(conn,addr) 14 15 16 print('數據來了') 17 data = conn.recv(1024) 18 print('recv:',data) 19 20 conn.send(data.upper()) 21 22 server.close()
1 服務端結果 2 >>> 開始等待數據.... 3 >>> <socket.socket fd=296, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 3001), raddr=('127.0.0.1', 54373)> ('127.0.0.1', 54373) 4 >>> 數據來了 5 >>> recv: b'hhhh'
1 import socket 2 import os 3 4 client = socket.socket() 5 client.connect(('localhost', 3001)) 6 while True: 7 #讓用戶本身輸入要發送的信息msg,由於涉及到中文,所已用encode和decode進行轉換 8 msg = input(">>>:").strip() 9 if len(msg) == 0: 10 continue 11 client.send(msg.encode("utf-8")) 12 data = client.recv(1024) 13 print('recv:', data.decode()) 14 15 client.close()
1 import socket 2 import os 3 4 server = socket.socket() # 建立套接字 5 server.bind(('localhost', 3001)) # 綁定要監聽端口 6 server.listen(1) # 監聽,數據表明容許多少個連接 7 8 print('開始等待數據....') 9 # conn表示客戶端鏈接到服務端生成的一個鏈接實例 10 # 先說第二個while,循環接收客戶端數據,當客戶端數據沒有發送,服務端收到數據爲空的時候跳出循環,這麼作是由於這個程序若是想要一直接收客戶端數據,就須要進行循環操做,可是若是收到數據爲空,該循環就會進入一個死循環,因此須要斷定條件,當客戶端結束髮送數據,而後結束鏈接; 11 # 而後第一個while,由於這裏考慮測試多人單線程鏈接server,若是不加while,當客戶端數據沒有發送,server會直接斷開鏈接,不接收下個新用戶的請求數據,因此將一個鏈接實例放在循環裏,當一個用戶斷開鏈接,回到上層,而後再接收新用戶的數據。 12 while True: 13 conn, addr = server.accept() # 等待數據 14 print(conn, addr) 15 print('數據來了') 16 while True: 17 data = conn.recv(1024) 18 print('recv:', data) 19 if not data: 20 print('The client did not respond') 21 break 22 conn.send(data.upper()) 23 24 server.close()
import socket import os client = socket.socket() client.connect(('localhost', 3001)) while True: #讓用戶本身輸入要發送的信息msg,由於涉及到中文,所已用encode和decode進行轉換 msg = input(">>>:").strip() if len(msg) == 0: continue client.send(msg.encode("utf-8")) data = client.recv(1024) #print('recv:', data.decode()) print(data.decode()) client.close()
import socket import os server = socket.socket() # 建立套接字 server.bind(('localhost', 3001)) # 綁定要監聽端口 server.listen(1) # 監聽,數據表明容許多少個連接 print('開始等待數據....') while True: conn, addr = server.accept() # 等待數據 print(conn, addr) print('數據來了') while True: data = conn.recv(1024) print('recv:', data) if not data: print('The client did not respond') break res = os.popen(data.decode()).read() #py3 裏socket發送的只有bytes,os.popen又只能接受str,因此要decode一下 conn.send(res.encode("utf-8")) server.close()