免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1860 | 回复: 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-18 08:52:38午马
日期:2014-04-30 13:28:11摩羯座
日期: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 ,
非商业性质,拒绝广告,只接收真正想学这方面技术的朋友,交流学习,申请请说明来自 贴吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP