python - python套接字服务器在发送数据后挂起

标签 python sockets networking server

我最近做了一个python套接字服务器,该服务器监听端口9777,该服务器应该接受连接,一旦连接成功,您就可以将信息发送到客户端。然后,客户端将打印出收到的所有内容。但是,我发现在发送一些数据后,服务器将挂起,直到我重新初始化新的连接为止。是否有这个原因,如果可以的话,我该如何防止它的发生

服务器的代码是:

import socket
import sys

host='0.0.0.0'
port=9777
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(10)
c,a=s.accept()
while True: 
    command=raw_input('[input>] ')
    if 'data' in command:
        c.send('continue')
        data=c.recv(1024)
        print data
    else:
        continue

仅当单词data在字符串中时,代码才会发送数据。这是客户端的代码:
import socket
import sys

host='192.168.0.13'
port=9777
while True:
    try:    
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        s.connect((host,port))
    except:
        continue
    while True:
        d=s.recv(9999)
        print d
        s.send('received')

我的目标是在服务器和客户端之间建立连接。我希望服务器能够在while循环中接受来自用户的输入,并将输入发送给客户端。客户端需要能够接收信息,并在接收到信息后将响应发送到服务器。然后,用户可以继续向服务器发送数据,直到他们决定终止程序为止。但是,服务器在向客户端发送一次数据后一直保持挂起状态。谁能告诉我如何预防呢?

最佳答案

我在计算机上尝试了此代码,但工作正常,也许您需要将host='192.168.0.13'更改为host='localhost'host='0.0.0.0'host='localhost'
看看这张照片enter image description here

如果问题仍然存在,则可能是您的IP地址与该网络中其他设备的IP地址相同,请尝试运行此命令ipconfig /renew

关于python - python套接字服务器在发送数据后挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45416143/

相关文章:

c - 仅 GET 命令正文,缺少 header

php - PHP非阻塞套接字

networking - 使用 iftop 通过特定端口的网络流量

python - 在 Python 3.5 中,当除以一个偶数时,为什么 divide 和 floor divide 给出不同的答案

Python 3 Selenium |剪贴板不适用于 Windows 上的 headless chromedriver

python - 日期列上的左合并在 Pandas 中表现得很奇怪

.net - .NET 中消息帧方法的优缺点

sockets - 将 Windows 上的端口从环回重定向到外部

android - 多个网络 - React Native 在安装 Virtualbox/Vmware 时选择了错误的 ip

python - 使用 pip3 升级 cvxpy 失败