python網絡編程之socket
阿新 • • 發佈:2018-01-28
socket 本地 log ret 關閉連接 sock sco ket utf
socket
應用層和tcp,ucp協議之間的一個接口,用戶只需操作接口,復雜的數據組織工作由其內部自行完成。
TCP協議的socket(套接字):
服務端
import socket sk = socket.socket() # 創建一個套接字對象 sk.bind((‘127.0.0.1‘, 8080)) # 綁定本地IP地址和端口 sk.listen() # 監聽 conn, address = sk.accept() # 創建連接 while True: ret = conn.recv(1024) # 接收數據 需要指定接收字節數 ifret == b‘bye‘: conn.send(ret) break print(ret.decode(‘utf-8‘)) info = input(‘>>>‘).encode(‘utf-8‘) conn.send(info) # 發送數據 必須是bytes類型 conn.close() # 關閉連接 sk.close() # 關閉套接字
客戶端
import socket sk = socket.socket() # 創建套接字 sk.connect((‘127.0.0.1‘, 8080)) #連接服務端 while True: info = input(‘>>>‘).encode(‘utf-8‘) sk.send(info) # 發送數據 ret = sk.recv(1024) # 接收數據 if ret == b‘bye‘: break print(ret.decode(‘utf-8‘)) sk.close() # 關閉套接字
UDP協議的scoket(套接字):
服務端
import socket sk = socket.socket(type=socket.SOCK_DGRAM) #創建ucp套接字對象 sk.bind((‘127.0.0.1‘, 8080)) # 綁定IP和端口 msg, address = sk.recvfrom(1024) # 等待接收數據 ucp必須先接收數據 print(msg.decode(‘utf-8‘)) sk.sendto(b‘hello‘, address) # 發送數據 要攜帶發送數據的地址 sk.close()
客戶端
import socket sk = socket.socket(type=socket.SOCK_DGRAM) # 創建ucp套接字對象 ip_port = (‘127.0.0.1‘, 8080) # 指定服務端IP和端口 sk.sendto(b‘hi‘, ip_port) # 發送數據到指定服務端 msg, address = sk.recvfrom(1024) # 接收返回的數據 print(msg.decode(‘utf-8‘)) sk.close()
python網絡編程之socket