gpt4 book ai didi

python相当于netcat

转载 作者:可可西里 更新时间:2023-11-01 02:32:11 27 4
gpt4 key购买 nike

我有一个 TCP 服务器,我需要用 Python 为其编写一个客户端。

服务器是使用 arduino_uip 的 arduino图书馆;服务器代码(几乎)与 TCP server example of that library 相同.使用 nc 作为客户端工作正常。

但是当我使用 python 套接字(如 this answer )与服务器通信时,服务器在套接字关闭或关闭时挂起。

这可能是服务器的问题;然而,由于 nc 作为客户工作正常,我的问题是:

什么是this answer与可能解释服务器在连接关闭/关闭时挂起的 nc 不同)?

总结哪些有效,哪些无效:

  • python 客户端和 nc -l 作为服务器:有效
  • nc 作为客户端和 arduino 服务器:有效
  • python 客户端和 arduino 服务器:挂起服务器

这是客户端代码:

import socket

def netcat(hostname, port, content):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((hostname, port))
s.sendall(content)
s.shutdown(socket.SHUT_WR)
while 1:
data = s.recv(1024)
if data == "":
break
print "Received:", repr(data)
print "Connection closed."
s.close()

编辑:

看来(Vorsprung 的回答让我想到了!)这实际上是一个时间问题。如果我在上面的代码中关闭之前添加 sleep(0.5) 一切都很好(就像在 netcat 中,在我按下 Ctrl+C 之前有一个手动延迟)。我想我现在必须检查那个 arduino 库......

最佳答案

查看了 netcat 源 ( svn checkout svn://svn.code.sf.net/p/netcat/code/trunk netcat-code ),它只在关闭之前调用 shutdown() ,而不仅仅是设置套接字后

这就是我所看到的区别

关于python相当于netcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19819677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com