【发布时间】:2026-02-19 04:40:01
【问题描述】:
我有三个文件。 client.py、server.py 和 test.py。 client.py 如下:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 6088))
while True:
a = raw_input()
s.send(a)
s.close()
server.py:
import socket
import sys
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',6088))
s.listen(1)
print("Waitting for connection.....")
while True:
socket,addr = s.accept()
while True:
data = socket.recv(1024)
if data:
print(data)
s.close()
test.py:
while True:
a = raw_input()
print("welcom "+ a)
我使用server.py 或test.py 启动服务器,然后我使用client.py 启动客户端,但是当我在客户端输入内容时,服务器不显示任何内容。为什么?以及如何解决它。
【问题讨论】:
-
您是否尝试过使用无缓冲输出,即
python -u server.py | ....? -
如果我错了,请纠正我,但是如果您不将其输出通过管道传输到测试脚本,我们可以假设您看到服务器打印消息吗?
-
另外,我看到管道中的两个脚本并行运行的假设。这个假设是真的吗 - 或者 linux 上的管道命令按顺序执行(python test.py 在完成之前不会获得 server.py 的标准输出)。
-
@Todd 如果我不使用管道,我可以看到消息。问题可能是我以错误的方式使用管道。
-
@SteffenUllrich 谢谢它的工作!但为什么呢?
标签: python linux sockets pipe python-2.x