做一个socket客户端
1、声明一个实例
2、绑定端口号和地址
3、循环发送和接收响应
其中要注意粘包的产生,为了防止粘包的产生,应该在服务器端先测出要发送信息的大小,
然后发送响应至客户端,等到服务器上一条信息发送完毕,客户再响应准备好接收下一条信息
这样就不会有粘包的产生
import socket
client = socket.socket() client.connect(('localhost',9999)) while True:
cmd = input(">>:").strip()
if len(cmd) == 0:continue
client.send(cmd.encode("utf-8"))
cmd_res_size = client.recv(1024)
print("命令结果大小:",cmd_res_size)
client.send("我准备好了".encode("utf-8")) #响应服务器端发送请求,为防止粘包的产生
received_size = 0
received_data =b''
while received_size < int(cmd_res_size.decode()):
data = client.recv(1024)
received_size += len(data)
received_data += data
else:
print("cmd res receive done...",received_size)
print(received_data.decode()) client.close()

最新文章

  1. JsonPropertyOrder无法为DTO对象进行属性排序
  2. python图片添加水印(转载)
  3. POJ 3624 Charm Bracelet(01背包)
  4. elasticsearch nested查询
  5. JSON 之 SuperObject(3): 访问
  6. MySQL在ROW模式下通过binlog提取SQL语句
  7. 【win8技巧】去掉Win8导航菜单下面的这台电脑其他的文件夹
  8. struct2(四)编写Struct2 的Action
  9. [Android开发常见问题-12] Android开发中debug.keystore如何使用。
  10. zookeeper C API
  11. eclipse 使 用Ctrl+鼠标左键进入mapper.xml文件的方法
  12. 数据库mysql大全(高级版)
  13. AtCoder Grand Contest 030 (AGC030) C - Coloring Torus 构造
  14. Vue项目的打包
  15. 【Linux命令】top命令
  16. chrome 下 input[file] 元素cursor设置pointer不生效的解决
  17. 《Inside C#》笔记(二) 初识C#
  18. Linux期中总结
  19. c++ 静态变量报错 undefined reference to static members
  20. telnet强制中断登录

热门文章

  1. JavaScript中var、let和const的区别(转载)
  2. Tomcat Getshell
  3. JS变量重复声明以及忽略var 声明的问题及其背后的原理
  4. port bridge enable命令导致的环路
  5. SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)
  6. day9面向对象,多线程2
  7. 简单的3d变换
  8. VS2008中 VB 报错 检索 COM 类工厂中 CLSID 为 {28E68F9A-8D75-11D1-8DC3-3C302A000000} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
  9. FC105 FC106 Scale功能块使用说明
  10. React(一)使用脚手架创建React项目