Python Java套接字问题

时间:2013-09-20 13:15:55

标签: java python sockets

我遇到了Java ServerSocket和Python的问题,我有一个可以与多个Java客户端通信的多线程echo服务器(用Java编写)。一切正常。

当我尝试连接python客户端时,python客户端可以从服务器接收数据,但是当它发送数据时,服务器似乎永远不会接收它。

当我尝试发送500K +字节时,我只能在服务器上看到数据。虽然我现在可以看到数据不完整且不同步。

我测试了以下示例代码,它可以正常使用python: http://norwied.wordpress.com/2012/04/17/how-to-connect-a-python-client-to-java-server-with-tcp-sockets/

唯一真正的区别在于它使用的链接代码:

BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream(),

我在服务器中使用的地方:

streamOut = new DataOutputStream(new BufferedOutputStream(s.getOutputStream())); 
streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream()));

这会导致问题吗?

2 个答案:

答案 0 :(得分:1)

在您的代码示例中,PrintWriter设置为autoflush。这意味着当调用println()时,缓冲区将被刷新,并因此被发送到网络。但是,您使用BufferedOutputStream可能忘记了flush()您的OutputStream。

答案 1 :(得分:0)

我认为你的python客户端没有刷新流,这就是为什么java服务器只在客户端上的缓冲区已满后获取数据的原因。