为什么添加while循环会导致意外行为?

时间:2016-05-23 21:55:45

标签: python sockets

我有这个客户端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(""))

2 个答案:

答案 0 :(得分:0)

快速查看socket docs,我发现有一个setsockopt()功能。如果您查看文档(man setsockopt),那么会出现SO_SNDBUF标志,该标志在发送时控制缓冲区大小。如果你没有发送足够的内容,它可能不会刷新,直到有更多的数据。

但是,似乎没有一种方法来刷新套接字(由于TCP帧大小),这个相关的答案可能会给你一些提示:Python Socket Flush

答案 1 :(得分:-1)

将循环更改为:

while True:
    input = raw_input("")
    sock.send(input)