我有这个客户端Python程序,发送到Java服务器程序。 在添加while循环之前,我的客户端工作正常。我需要添加一个while循环来继续发送用户输入;现在,在我杀死程序(Python客户端)之前,文本没有出现在另一端,然后我在Python中输入的所有文本将出现在另一端,但只有在杀死程序之后!是什么原因造成的?
import socket
HOST = "192.168.0.76"
PORT = 8080
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
while (True):
sock.sendall(raw_input(""))
答案 0 :(得分:0)
快速查看socket docs,我发现有一个setsockopt()
功能。如果您查看文档(man setsockopt
),那么会出现SO_SNDBUF
标志,该标志在发送时控制缓冲区大小。如果你没有发送足够的内容,它可能不会刷新,直到有更多的数据。
但是,似乎没有一种方法来刷新套接字(由于TCP帧大小),这个相关的答案可能会给你一些提示:Python Socket Flush
答案 1 :(得分:-1)
将循环更改为:
while True:
input = raw_input("")
sock.send(input)