免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5497 | 回复: 18
打印 上一主题 下一主题

问诸位Python高手,一个Socket编程的问题,在线等待 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-20 14:54 |只看该作者 |倒序浏览
5可用积分
本人是C程序员,最近开始无聊,学习Python。

最近在搞一个测试用的工具用了Python 的socket

用的是TCP连接

Server用C写的,client用python写的。

就是TCP Client像server 发消息时,调用socket.send()的时候发现, 两个send的消息,被合成一个tcp包发给server了

不知道python有没有什么Api,让每次send的时候发送一个tcp包啊。

我知道C可以调用flush()做到这个功能,不知道python有没有类似的Api啊。或者其他解决方案。

请大家多多帮忙,谢谢

论坛徽章:
0
2 [报告]
发表于 2009-02-20 15:26 |只看该作者
不会啊 你是怎么写的  data为流
    while byteswritten < len(data):
        startpos = byteswritten
        endpos = min(byteswritten + 512, len(data))
        byteswritten += s.send(data[startpos:endpos])
    s.shutdown(1)

论坛徽章:
0
3 [报告]
发表于 2009-02-20 15:57 |只看该作者
为什么要说原来是c程序员呢?为什么要说无聊呢?为什么说python这样呢?难道c写的就不这样了么?....我替flw说的,不关我事,阿门..

论坛徽章:
0
4 [报告]
发表于 2009-02-20 16:17 |只看该作者
原帖由 电动武松 于 2009-2-20 15:57 发表
为什么要说原来是c程序员呢?为什么要说无聊呢?为什么说python这样呢?难道c写的就不这样了么?....我替flw说的,不关我事,阿门..

靠 专程跑来捣乱

论坛徽章:
0
5 [报告]
发表于 2009-02-20 16:43 |只看该作者
原帖由 enchanter1982 于 2009-2-20 14:54 发表
就是TCP Client像server 发消息时,调用socket.send()的时候发现, 两个send的消息,被合成一个tcp包发给server了

不知道python有没有什么Api,让每次send的时候发送一个tcp包啊。

我知道C可以调用flush()做到这个功能,不知道python有没有类似的Api啊。或者其他解决方案。

要send多少字节不是自己定么?

论坛徽章:
0
6 [报告]
发表于 2009-02-20 16:54 |只看该作者
原帖由 luffy.deng 于 2009-2-20 16:43 发表

要send多少字节不是自己定么?

他可能没断流

论坛徽章:
0
7 [报告]
发表于 2009-02-20 17:49 |只看该作者

回复 #6 guijia8427 的帖子

我是没有断流,因为我的Client要保持连接。此外本人的Socket的经验也比较少,都是在FrameWork下面干活。

有没有不断流的好方法,又能保证Send一次就能发送一个TCP消息,

随便鄙视3楼,我只是问一个问题,反映那么大!!!

论坛徽章:
0
8 [报告]
发表于 2009-02-20 17:56 |只看该作者
原帖由 enchanter1982 于 2009-2-20 17:49 发表
我是没有断流,因为我的Client要保持连接。此外本人的Socket的经验也比较少,都是在FrameWork下面干活。

有没有不断流的好方法,又能保证Send一次就能发送一个TCP消息,

随便鄙视3楼,我只是问一个问题, ...

断流不表示 断开连接啊 你发完了 接收了数据还以接着发啊 你不要调用close()方法就行了 好像python里有一个方法可以不用一点点的发送 我放了那个方法名了 你找一下吧

[ 本帖最后由 guijia8427 于 2009-2-20 17:59 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-02-20 18:00 |只看该作者
LZ可以把数据分开 用循环 发完了一个接着发第二个 只要改变 数据流就行

论坛徽章:
0
10 [报告]
发表于 2009-02-20 21:15 |只看该作者
原帖由 guijia8427 于 2009-2-20 18:00 发表
LZ可以把数据分开 用循环 发完了一个接着发第二个 只要改变 数据流就行

???send不是只把数据拷到发送缓冲区里了没?第一个send有可能跟第二个send一起发送了不是吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP