Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 写线,读线,然后合上插座_Java_Sockets - Fatal编程技术网

Java 写线,读线,然后合上插座

Java 写线,读线,然后合上插座,java,sockets,Java,Sockets,我需要从Java连接到tcp/ip套接字,以便执行一些操作: 1) 从套接字读取数据(可选的“hello”消息),然后丢弃它 2) 将单行数据作为字符串写入套接字 3) 从套接字读取响应,一行,并将其存储到字符串中 4) 合上插座 我写了这段代码: public String writeLineToSocket(String s) throws IOException { Socket socket = null; OutputStreamWriter osw

我需要从Java连接到tcp/ip套接字,以便执行一些操作:

1) 从套接字读取数据(可选的“hello”消息),然后丢弃它

2) 将单行数据作为字符串写入套接字

3) 从套接字读取响应,一行,并将其存储到字符串中

4) 合上插座

我写了这段代码:

public String writeLineToSocket(String s) throws IOException {

        Socket socket = null;
        OutputStreamWriter osw = null;
        BufferedReader is = null;
        String response = null;

        try {

            socket = new Socket(serverAddress, serverPort);
            is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            osw = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");

            osw.write(s, 0, s.length());
            osw.flush();

            response = is.readLine();
            System.out.println(response);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (socket!=null) socket.close();
            if (osw!=null) osw.close();
        }

        return response;
    }
例如,使用netcat dict.org 2628,我收到了第一条“hello”消息(我对此不感兴趣):

220在Linux 4.4.0-1-amd64上运行pan.alephnull.com dictd 1.12.1/rf

然后我想发送我的命令字符串:

定义wn java

最后,我想将整个响应存储到一个字符串中:

150 1检索到的定义151“java”wn“WordNet(r)3.0(2006)” JAVA n 1:婆罗洲以南印度尼西亚的一个岛屿;其中一个 世界上人口最密集的地区 2:由磨碎的咖啡豆浸液组成的饮料; “他点了一杯咖啡”[syn:{coffee},{java}] 3:独立于平台的面向对象编程语言。250正常[d/m/c=1/0/14;0.000r 0.000u 0.000s]


我的方法只显示hello消息,然后挂起。。。我做错了什么?

您的方法称为
writeLine
,但它不写行,除非字符串已经有行终止符。添加一个。

强烈建议使用DataFetcher(在自己的线程中运行)从套接字读取:后跟