首页 > 解决方案 > 读取前无法写入套接字

问题描述

我有两个套接字应该发送一个数据包,并监听响应。

客户端(stt 是 Socket):

BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(stt.getOutputStream()));
BufferedReader wrr = new BufferedReader(new InputStreamReader(stt.getInputStream()));
if (i == JOptionPane.YES_OPTION) {
    wr.write("cnt\n");
    wr.write(s + "\n");
    
    #String s1 = wrr.readLine();
    #if (s1.equals("cnt")) {
    #    other = stt;
    #    startSc(MP);
    #}
} else wr.write("0");
wr.close();
wrr.close();

服务器端(inc 是 Socket):

BufferedReader r = new BufferedReader(new InputStreamReader(inc.getInputStream()));
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(inc.getOutputStream()));
String correction = r.readLine(); //that line blocks
...

在这种情况下(带有#的行);服务器端无法获取数据包。

如果我在客户端删除带有 # 的行,问题就解决了。

如何在写作后立即阅读以获取回复?

标签: javasocketsinputstreamoutputstream

解决方案


推荐阅读