You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python socket编程连接远程服务器发送数据后无响应问题求助

问题排查与解决

核心原因

TCP属于流式协议,绝大多数基于TCP的交互服务都会用换行符作为单条消息的结束边界。你使用Chrome的netcat插件测试时,输入内容按下回车后,插件会自动在发送内容末尾追加换行符,服务端识别到结束标记才会处理请求并返回响应。但Python的input()函数会自动去掉输入末尾的换行符,你直接发送原始输入内容的话,服务端会认为消息还没发送完成,一直处于等待状态,不会返回任何数据,最终导致recv语句持续阻塞。

修复方案

你只需要在发送内容末尾追加服务端能识别的结束标记即可,绝大多数场景下加\n即可,如果是Windows部署的服务端可以尝试用\r\n,同时建议用sendall替代send确保数据完整发送,修改后代码如下:

import socket

my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 可选添加超时设置,避免一直卡住,单位为秒
my_socket.settimeout(5)
my_socket.connect(("18.198.234.32", 6666))

data = my_socket.recv(1024).decode()
print(data)

to_send = input("enter: ") + '\n'  # 追加换行作为消息结束标记
my_socket.sendall(to_send.encode())  # sendall保证所有数据都被发送

data = my_socket.recv(1024).decode()
print(data)

my_socket.close()

其他排查点

  • 如果添加换行后还是无响应,可以先抓包确认你用netcat插件发送的内容末尾带的是\n还是\r\n,对应修改追加的结束标记即可
  • 可以打印send的返回值,确认实际发送的字节数是否和你预期的一致

内容的提问来源于stack exchange,提问作者asaf melyas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:36:03