目录
简易服务器与客户端通信
此代码可以用于两者互相通信(就是互相发信息)
服务器代码
#导入一个socket模块来建立一个简单的通信服务器
import socket
#socket.AF_INET表示使用 IPv4 地址族,这是 Internet 上常用的地址族。socket.SOCK_STREAM 表示创建一个基于 TCP 协议的 Socket 对象
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#相当于绑定ip地址和端口号 将两者以元组的形式写进去
soc.bind(('172.17.8.49', 8080)) #如果写本机ip,外部可以访问
# soc.bind(('127.0.0.1', 8080)) #如果写127.0.0.1,只能自己访问
#开启服务器
soc.listen(5)#这个5是半连接池的大小
#等待客户端发送请求
conn, addr = soc.accept()#conn表示新的socket对象,addr表示客户端的地址信息
print('有个客户端连接上了', addr)
while True:
# 接收客户端的数据
data = conn.recv(1024) # recv就是接收的作用,里面1024指能接收1024个字节,data指的是客户端发过来的数据
# 解码收到的字节串以还原文本
huanyuan = data.decode('utf-8')
print(f'收到客户端的信息:{huanyuan}') # 这里是给这个客户端发来的请求输出出来
# 将文本编码为字节串(UTF-8编码)
shuju = input('回复:')
shuju = shuju.encode('utf-8')
# conn.send 是发数据,数据必须是bytes格式也就是b'内容'
conn.send(shuju)
#关闭与客户端的连接
conn.close()
#关闭服务器的主要通信端口
soc.close()
然后是客户端的代码
#导入socket方法
import socket
#创建一个socket对象
soc = socket.socket()
#连接服务器(以元组的形式传进去)
soc.connect(('172.17.8.49', 8080))
while True:
# 将文本编码为字节串(UTF-8编码)
shuju = input('输入:')
# 这里给服务器发送数据
soc.send(shuju.encode('utf-8'))
# 接收来自服务器的数据,同时把数据赋值给data这个变量
data = soc.recv(1024)
# 解码收到的字节串以还原文本
huanyuan = data.decode('utf-8')
print(f'收到服务器的回复:{huanyuan}') # 这里是把这个服务器发来的请求输出出来
#关闭连接与服务器的连接,释放资源
soc.close()
标签:10,soc,socket,23,shuju,服务器,conn,客户端
From: https://www.cnblogs.com/slzjb/p/17782338.html