服务端:
import socket sk = socket.socket() #创建对象 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免服务器重启时报address already in use错误 sk.bind(('127.0.0.1',8877)) #把地址绑定到套接字(ip地址,端口号) sk.listen() #监听链接 conn,addr = sk.accept() #接受客户端链接 ret = conn.recv(1024) #接受客服端信息(数据长度) print(ret) #打印客户端信息 conn.send(b'hi') #向客户端发送星系(必须是bytes类型) conn.close() #关闭客户端连接 sk.close() #关闭服务器套接字
客户端:
import socket sk = socket.socket() #创建对象 sk.connect(('127.0.0.1',8877)) #连接服务器(ip地址,端口号) sk.send(b'hello') #向服务器发送信息(必须是bytes类型) ret = sk.recv(1024) #接收信息(数据大小) print(ret) #打印信息 sk.close() #关闭对象
有收必有发,收发必相等,send和rexv必须是对应的
send ----- recv
send ----- recv
recv ----- send
传递中文:
# 服务端 # 接收中文 ret = conn.recv(1024).encode('utf-8') print(ret) #打印 # 发送中文 conn.send(bytes('七点半',encoding='utf-8')) # 客户端 # 发送中文 sk.send(bytes('几点了'.encode('utf-8'))) # 接收中文 ret = sk.recv(1024).encode('utf-8') print(ret) #打印
实例:聊天
服务端:
import socket sk = socket.socket() #创建对象 sk.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #避免服务器重启时报address already in use错误 sk.bind(('127.0.0.1',8877)) #把地址绑定到套接字(ip地址,端口号) sk.listen() #监听链接 conn,addr = sk.accept() #接受客户端链接 while True: ret = conn.recv(1024).decode('utf-8') print(ret) if ret == 'bye': conn.send(b'bye') break info = input('>>>') conn.send(bytes(info,encoding='utf-8')) conn.close() #关闭客户端连接 sk.close() #关闭服务器套接字
客户端:
import socket sk = socket.socket() #创建对象 sk.connect(('127.0.0.1',8877)) #连接服务器(ip地址,端口号) while True: info = input('>>>') sk.send(bytes(info,encoding='utf-8')) ret = sk.recv(1024).decode('utf-8') print(ret) if ret == 'bye': sk.send(b'bye') break sk.close() #关闭对象