我有2個程序:一個客戶端和一個服務器。BufferedReader readLine和OutputStreamWriter .write
服務器創建一個ServerSocket和客戶端使用:
address = InetAddress.getByName(host);
conn = new Socket(address, port);
這個工作,但現在的問題是:一旦點擊鼠標時void mousePressed() {
被調用,執行這樣的:(客戶端)
void mousePressed() {
try {
BufferedOutputStream os = new BufferedOutputStream(conn.getOutputStream());
OutputStreamWriter osw = new OutputStreamWriter(os, "US-ASCII");
osw.write("123");
osw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
服務器應該使用接收輸入:
BufferedReader reader = new BufferedReader(
new InputStreamReader(new BufferedInputStream(conn.getInputStream())));
StringBuilder result = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
result.append(line);
}
reader.close();
println(result.toString());
服務器僅在套接字關閉後才接收輸入:客戶端上的conn.close();
或退出客戶端。由於我想多次點擊鼠標,我無法關閉套接字。
如何在不關閉套接字的情況下發送輸入信息?
編輯:連接代碼:
服務器:
// init
ServerSocket socket1;
int main_port = 5204;
// in main
try {
socket1 = new ServerSocket(main_port);
Socket conn = socket1.accept();
} catch (Exception e) {
e.printStackTrace();
}
客戶:
// init
String host = "localhost";
int port = 5204;
Socket conn;
InetAddress address;
// in main
try {
address = InetAddress.getByName(host);
conn = new Socket(address, port);
} catch (Exception e) {
e.printStackTrace();
}
另外,**永遠不會**異常.'catch(Exception e){}'什麼都不做! –
提示的名稱是'readLine()'。它讀取一行文字,而你沒有發送。嘗試發送一個換行符,即'\ n' –
@ShashankKadne更糟糕的是它會拋出您可能需要知道的錯誤,尤其是如果您的軟件無法正常工作。 –