首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python套接字非常慢怎么办?

Python套接字非常慢怎么办?
EN

Stack Overflow用户
提问于 2018-07-27 00:08:46
回答 1查看 0关注 0票数 0

我想用Python为Raspberry PI创建一个脚本,我有个问题。

为了测试脚本,我在Windows 64位计算机上运行Python3.6。我希望使用TCP将“1”发送到端口1235上的本地地址(192.168.1.101/127.0.0.1)。

当我在原始模式下使用PuTTY时,我可以将这些数据发送到我的服务器,并立即得到正确的响应。

但是当我试图在Windows上使用Python来完成这个任务时,我会得到一个2分钟的延迟。我还可以看到命令仅在发送2分钟后由服务器接收,在这两分钟之后,我得到了一个即时的答复。

代码:

代码语言:txt
复制
import socket

message = '\x31'.encode()    
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    
s.connect(('192.168.1.101', 1235))    
s.send(message) ; print ("send ready") ; data = s.recv(80) ; s.close(); print ("received"), repr(data)

#forgive me the ; ... I'm on a command line for testing.
#response is:

1

send ready

#2 minute delay

("None, "b"140,1,1,test\\r\n'")

我一直在尝试SOCKET_DGRAMRAW TCP NO DELAYSO_SNDBUF等等,但我找不到这是从哪里来的。

EN

回答 1

Stack Overflow用户

发布于 2018-07-27 09:25:43

尝试在发送之后执行s.shutdown(socket.SHUT_WR),然后再执行recv; 关闭套接字的写入端 ,因此远程端知道发送者已完成并响应到目前为止收到的内容。 没有它,你需要一些特定于协议的方式来分隔消息(你的消息看起来太简单了,不能包含这样的分隔符)。Putty可能会设置套接字选项TCP_NODELAY,你可以自己尝试模拟它,尽管在一般情况下存在一些争议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档