Java 摆动套筒试验

Java 摆动套筒试验,java,swing,sockets,Java,Swing,Sockets,我正在使用Swing尝试一个程序。 我使用一个套接字连接到服务器,客户端有gui代码 服务器代码只是读取我使用System.out.println发送的数据。但问题是它挂断了;服务器永远无法获取数据 out.println("Done with the bingo"); 这是服务器应获取的第一个字符串。但它保持在等待状态,就好像什么也没有收到一样。您必须在每次println()之后使用flush(),或者在PrintWriter上激活自动刷新,以便真正发送数据: ... ou

我正在使用Swing尝试一个程序。
我使用一个套接字连接到服务器,客户端有gui代码



服务器代码只是读取我使用System.out.println发送的数据。但问题是它挂断了;服务器永远无法获取数据

       out.println("Done with the bingo");
这是服务器应获取的第一个字符串。但它保持在等待状态,就好像什么也没有收到一样。

您必须在每次
println()
之后使用
flush()
,或者在PrintWriter上激活自动刷新,以便真正发送数据:

...
out = new PrintWriter(os);
out.println("Done with the bingo");
out.flush();
...

不要忘记服务器…

您必须在每次
println()
之后使用
flush()
,或在PrintWriter上激活自动刷新,以便真正发送数据:

...
out = new PrintWriter(os);
out.println("Done with the bingo");
out.flush();
...


不要忘记服务器…

如Carlos所说,在PrintWriter中启用自动刷新应该可以解决您的主要问题。您可能会考虑以下几个其他想法:

如果希望服务器逻辑处理多个客户端请求,请将其包装在一个循环中(例如,
while(true){…}
),并在单独的线程中处理每个请求


由于您在Swing事件调度线程(即ActhPrimeMeD(方法))上生成客户端请求,您可能会考虑将其封装在可运行的或SWANGWORKER中,这样就不会阻塞调度线程。否则,当套接字通信发生时,您可能会注意到UI显示为挂起或未绘制。

如Carlos所说,在PrintWriter中启用自动刷新应该可以解决您的主要问题。您可能会考虑以下几个其他想法:

如果希望服务器逻辑处理多个客户端请求,请将其包装在一个循环中(例如,
while(true){…}
),并在单独的线程中处理每个请求


由于您在Swing事件调度线程(即ActhPrimeMeD(方法))上生成客户端请求,您可能会考虑将其封装在可运行的或SWANGWORKER中,这样就不会阻塞调度线程。否则,当套接字通信发生时,您可能会注意到UI似乎挂起或没有绘制。

我发现在swing上编程时,如果笔记本电脑不掉到沙子里,很难保持平衡。@Software Monkey:这就是为什么你要插入插座。如果我们能看一下服务器的代码,那会有帮助。如果有人添加了服务器代码:)我发现在swing上编程时,如果笔记本电脑不掉到沙子里,很难平衡它。@Software Monkey:这就是为什么你要插入插座。如果我们能偷看一下服务器的代码,这会有所帮助。如果有人添加了服务器代码:)
...
out = new PrintWriter(os);
out.println("Done with the bingo");
out.flush();
...
...
out = new PrintWriter(os, true);    // autoflush
out.println("Done with the bingo");
...