基于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'))