python - 程序停止运行是由python udp 停留在一个地方引起的

标签 python sockets centos udp

我有一个关于 socket 的问题在 python 。
我用 udp-protocol在我的程序中。程序中通常会出现以下错误。我的程序停留在一个点。使用 pstack pid ,详细信息如下:

$ pstack 12776
#0  0x000000318b20e9a3 in __recvfrom_nocancel () from /lib64/libpthread.so.0
#1  0x00007f2fbc14fad1 in sock_recvfrom_guts () from /home/work/local/lib/python2.7/lib-dynload/_socket.so
#2  0x00007f2fbc14fd82 in sock_recvfrom () from /home/work/local/lib/python2.7/lib-dynload/_socket.so
#3  0x000000000049bdc0 in PyEval_EvalFrameEx ()
#4  0x000000000049c83e in PyEval_EvalFrameEx ()
#5  0x000000000049c83e in PyEval_EvalFrameEx ()
#6  0x000000000049d93e in PyEval_EvalCodeEx ()
#7  0x000000000049da52 in PyEval_EvalCode ()
#8  0x00000000004bd2f0 in PyRun_FileExFlags ()
#9  0x00000000004bd4bc in PyRun_SimpleFileExFlags ()
#10 0x000000000041608c in Py_Main ()
#11 0x000000318ae1ecdd in __libc_start_main () from /lib64/libc.so.6
#12 0x0000000000415019 in _start ()

我认为 upd-protocol应该没有问题。我真的不明白为什么会出现这种情况。没有人能帮帮我,谢谢!python的版本是2.7.3。我的代码如下:
address = (server_ip, server_port);
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(send_buf, address)
response, addr = s.recvfrom(2048)
if response:
    real_body = self.parse_response(response)

最佳答案

我找到了一个原因。我在代码中使用了 udp 协议(protocol)。有时由于网络问题,客户端无法发送服务器发送的数据。
最后,我通过在客户端使用选择功能解决了这个问题。

关于python - 程序停止运行是由python udp 停留在一个地方引起的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38866491/

相关文章:

python - 尝试使用正则表达式从脚本注释中提取日期和版本号

django - 当我将我的 Django 应用程序从一个系统复制到另一个系统时,如何确定要安装哪些依赖项?

linux - CentOS7 的 EC2 根卷扩展

python - 无法使用 python 将 UDP 数据包发送到本地端口,根据 WireShark 校验和失败

c - 在 TCP/IP 聊天程序中无法工作

c++ - TCP 服务器不接受客户端发出的正确数量的连接,具有少量监听积压

php - apache 2.4 (CentOS) 和 apache 2.4 (Red Hat) 有什么区别?

python - 将高斯总和转化为快速 Numpy?

python - 将 Pandas 数据框转换为嵌套 JSON

javascript - 如何检索返回的 JS 函数值并将其传递给 Flask