python socket 通信

python 使用socket 中的 TCP 通信
运行顺序,服务端必须先运行,客户端后运行,因为服务端需要等待客户端的连接。

  1. TCP 的服务端 server.py
# 导入socket 库
from socket inport *
# 主机地址0.0.0.0 表示绑定本机所有的网络接口ip地址
# port 端口号
IP = '127.0.0.1'
PORT = 5000

# 定义一次从socket缓存区最多读入字节个数
BUFLEN = 512
#实例化一个socket 对象
# 参数1  AF_INET 表示该socket网络层使用IP 协议
# 参数2  SOCK_STREAM 表示该socket 传输层使用TCP 协议

listensocket = socket(AF_INET,SOCK_STREAM)

# socket 绑定地址和接口
listensocket.bind((IP,PORT)) # 绑定的是一个元组

#使socket处于监听状态,等待客户端连接请求
# 参数5表示 最对接受5个连接的客户端
listensocket.listen(5)

datasocket,addr = listensocket.accept()

while True:
	recved = datasocket.recv(BUFLEN)
	if not recved :
		break
	# 读取的字节数据是bytes类型,需要解码为字符串
	info = recved.decode()
	print(info)
	datasocket.sent(f'服务端接收到了信息{info}'.encode())
# 服务端也可以调用close()关闭socket

datasocket.close()
listensocket.close()

2 TCP 的客户端 client.py

from socket inport * 
IP = '127.0.0.1'
SERVER_PORT = 5000
BUFLEN = 512

#实例化一个socket 对象
datasocket = socket(AF_INET,SOCK_STREAM)
# 连接到服务端socket
datasocket.connect(IP,SERVER_PORT)

while True:
	# 从终端读入用户输入的字符串
	toSend = input(">>")
	if toSend == ' ':
	break
	#发送信息,也要编码为bytes
	datasocket.send(toSend.encode())
	#等待接收服务端的信息
	
	recved = datasocket.recv(BUFLEN)
	info = recved.decode()
	print(info)
	#如果返回空bytes 表示对方关闭连接
	if not recved:
		break
datasocket.close()

你可能感兴趣的:(Python)