[英]Writing line, reading line, then closing a socket
我需要從Java連接到tcp / ip套接字,以便執行一些操作:
1)從套接字讀取數據(可選的“ hello”消息),然后將其丟棄;
2)將單行數據作為字符串寫入套接字;
3)從套接字讀取響應,一行,然后將其存儲到String中;
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 pan.alephnull.com在Linux 4.4.0-1-amd64上規定為1.12.1 / rf <42349519.9983.1492182590@pan.alephnull.com>
然后我要發送命令字符串:
定義wn Java
最后,我想將整個響應存儲到一個String中:
檢索到150 1個定義151“ java” wn“ WordNet(r)3.0(2006)” Java n 1:婆羅洲以南印度尼西亞的一個島嶼; 世界上人口最稠密的地區之一:2種飲料,其中包括研磨咖啡豆。 “他點了杯咖啡” [syn:{coffee},{java}] 3:一種與平台無關的面向對象的編程語言。 250 ok [d / m / c = 1/0/14; 0.000r 0.000u 0.000s]
我的方法僅顯示問候消息,然后掛起...我在做什么錯?
您的方法稱為writeLine
但它不會寫行,除非字符串已經具有行終止符。 加一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.