忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 540 | 回复: 4

求助一个python网络通信的问题 [复制链接]

论坛徽章:
0
发表于 2017-06-12 23:44 |显示全部楼层
本帖最后由 yue306 于 2017-06-12 23:52 编辑

程序分为svr端和客户端。先贴代码:server端 (server.py):
  1. #!/usr/bin/python
  2. import sys
  3. import socket

  4. s=socket.socket()
  5. bindinfo=("0.0.0.0",24000)
  6. s.bind(bindinfo)
  7. s.listen(100)

  8. while 1:
  9.     conn,temp=s.accept()
  10.     while 1:
  11.         my_temp=conn.recv(1024)
  12. print my_temp
复制代码
客户端(client.py)
  1. #!/usr/bin/python
  2. import socket
  3. import sys
  4. import time

  5. s=socket.socket()
  6. connectinfo=("192.168.1.180",24000)
  7. s.connect(connectinfo)
  8. i=0
  9. while 1:
  10.     msg="test message %s"%(i)
  11.     print msg
  12.     s.send(msg)
  13.     i=i+1
  14.     #time.sleep(1)
复制代码



执行的过程中,应该每次从客户端获取到数据后直接打屏,并且每接收一次请求,就打印内容并换行(print自带换行),但是,把客户单的sleep取消之后,发现svr端时不时的会出现不换行,如下:
test message 84985
test message 84986
test message 84987
test message 84988
test message 84989
test message 84990
test message 84991test message 84992test message 84993test message 84994test message 84995test message 84996test message 84997test message 84998test message 84999test message 85000test message 85001test message 85002test message 85003test message 85004test message 85005test message 85006test message 85007test message 85008test message 85009
test message 85010test message 85011test message 85012test message 85013
test message 85014test message 85015test message 85016
test message 85017test message 85018
test message 85019test message 85020
test message 85021test message 85022
test message 85023test message 85024
test message 85025test message 85026
test message 85027test message 85028
test message 85029test message 85030


开始怀疑时不时也有标准输出缓冲区,于是执行svr端的程序加上-u,以及每次flush stdout,结果还是不行。


求大牛们指教,这是什么原因?

QQ截图未命名.png

论坛徽章:
0
发表于 2017-06-13 20:18 |显示全部楼层
现在论坛都没人了咩?

论坛徽章:
5
午马
日期:2014-04-30 13:28:11技术图书徽章
日期:2014-04-18 08:52:38摩羯座
日期:2014-11-07 13:34:122015年亚洲杯之日本
日期:2015-03-12 14:01:4915-16赛季CBA联赛之北京
日期:2017-06-28 17:25:56
发表于 2017-06-14 11:30 |显示全部楼层
没测试  感觉是 没有sleep后,不停地发送   my_temp=conn.recv(1024)一次接受的多次发送的data(也是小于1024的)

论坛徽章:
0
发表于 2017-06-15 08:10 |显示全部楼层
你把server.py中的
  1. print my_temp
复制代码
该为
  1. print [my_temp]
复制代码

会发现 有时候 my_temp接收的是多个clien.py发送过来的数据

这是因为server端来不及处理client发送过来的数据
会将数据缓存到socket缓存区中
到了第二次去取的时候
会把缓冲区中所有数据都取出来(这个时候缓冲区已经接收多个client发送过来的数据)
就会出现这种现象

有问题可以来这个技术型学习社区提问:www.markbj.com 活跃度很高

论坛徽章:
0
发表于 2017-06-17 12:09 |显示全部楼层
加我们的群问效率更高,这个群是一群工程师组建的面向初学者的
Python Linux 学习群, qq 群号: 278529278 ,
Php Linux 学习群, qq 群号: 476648701 ,
非商业性质,拒绝广告,只接收真正想学这方面技术的朋友,交流学习,申请请说明来自 贴吧
来自安卓客户端来自客户端
您需要登录后才可以回帖 登录 | 注册

本版积分规则

SACC2017购票7.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP