基於tcp協議
服務端:
import socket sk = socket.socket() # 實例化一個對象 sk.bind(('127.0.0.1',9000)) # 綁定一個地址 ip+端口號 括號里面必須時元組的形式 # 127.0.0.1 表示的本機地址,不過交換機的,只是為了排除一些網絡問題,端口號一般寫9000之后的數 sk.listen() # 表示開始監聽 conn,addr = sk.accpet() # 接受一個鏈接請求 # conn 是一個對象,addr是請求對象的地址 # conn.send(b'hello') # 給請求對象發送hello conn.send('hello'.encode('utf-8')) # 推薦使用 # conn.send('你好'.encode('utf-8')) # 發送中文時只能用這個 msg = conn.recv(1024).decode('utf-8') # 接受客戶端發來的消息 print(msg) conn.close() # 與對方的信息傳遞結束 sk.close() # 關閉
客戶端:
import socket sk = socket.socket() sk.connect(('127.0.0.1',9000)) msg = sk.recv(1024).decode('utf-8') # 最多接受1024字節 print(msg) sk.send('你好'.encode('utf-8')) sk.close()
基於udp協議
服務端:
# import socket # sk = socket.socket(type=socket.SOCK_DGRAM) from socket import socket,SOCK_DGRAM sk = socket(type=SOCK_DGRAM) sk = bind(('127.0.0.1',9000)) while True: msg,cli_addr = sk.recvfrom(1024) # print(msg,cli_addr) # cli_addr 為客戶端的地址 print(msg.encode('utf-8')) if msg.encode('utf-8').upper() == 'Q': continue content = input('>>>') sk.sendto(content.encode('utf-8'),cli_addr)
客戶端:
from socket import socket,SOCK_DGRAM sk = socket(type=SOCK_DGRAM) server_addr = ('127.0.0.1',9000) # 服務端地址 while True: content = input('>>>') if content.upper() == 'Q': break sk.sendto(content.encode('utf-8'),server_addr) msg = sk.recv(1024) print(msg.decode('utf-8'))