python全栈脱产第32天------基于tcp协议通信的套接字、模拟ssh实现远程执行命令、粘包问题

一、基于tcp协议通信的套接字

  服务端必须满足至少三点:

    1.绑定一个固定的ip和port

    2.对外能够一直提供服务,稳定运行

    3.能够支持并发

  服务端

from socket import *

server = socket(AF_INET, SOCK_STREAM)
server.bind(('127.0.0.1', 8080))
server.listen(5)

conn, client_addr = server.accept()
print(client_addr)

# 通信循环
while True:
try:
data = conn.recv(1024)
if len(data) == 0:break # 针对linux系统
print('-->收到客户端的消息: ',data)
conn.send(data.upper())
except ConnectionResetError:
break

conn.close()
server.close()
  客户端
from socket import *

client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080))

# 通信循环
while True:
msg=input('>>: ').strip()
client.send(msg.encode('utf-8'))
data=client.recv(1024)
print(data)

client.close()

二、粘包
  定义:tcp协议流式传输数据的方式导致的
  如何解决:接收端能够精确地收干净每个数据包没有任何残留

猜你喜欢

转载自www.cnblogs.com/zhouyi0316/p/9581159.html