標籤:res 客戶 tcp協議 size utf-8 服務 import send pre
socket
應用程式層和tcp,ucp協議之間的一個介面,使用者只需操作介面,複雜的資料群組織工作由其內部自行完成。
TCP協議的socket(通訊端):
服務端
import socketsk = socket.socket() # 建立一個通訊端對象sk.bind((‘127.0.0.1‘, 8080)) # 綁定本地IP地址和連接埠sk.listen() # 監聽conn, address = sk.accept() # 建立串連while True: ret = conn.recv(1024) # 接收資料 需要指定接收位元組數 if ret == 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 socketsk = 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 socketsk = 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 socketsk = 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