我有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更糟糕的是它会抛出您可能需要知道的错误,尤其是如果您的软件无法正常工作。 –