![](/img/trans.png)
[英]How to receive messages from server to client, without prompt from client
[英]How to receive input from client in server?
如何在客户端控制台上将输入发送到服务器? 到目前为止,我有
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
如何在服务器端获得“输入”? 我必须在clientSocket上调用什么? 我已经试过了:
PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
out.write(input);
在服务器端:
serverSocket = new ServerSocket(port);
while(true) {
clientSocket = serverSocket.accept();
out = new PrintWriter(clientSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String input = in.readLine();
if (input.equals("2")) {
System.out.println("activate receiveFile");
receiveFile();
}
但是,当我输入2时,“输入”肯定不是2。
创建PrintWriter对象时,尝试使用PrintWriter(Writer out,boolean autoFlush)构造函数。 例如:out = new PrintWriter(echoSocket.getOutputStream(),true);
服务器端构造器
try {
is = new BufferedReader(new InputStreamReader(new BufferedInputStream(soc.getInputStream())));
os = new PrintWriter(new BufferedOutputStream(soc.getOutputStream()), false);
printWriterQueue = new PrintWriterQueue(this, os, is, timeout);
soc.setSoTimeout(5000);
start();
} catch (Exception e){
e.printStackTrace();
}
您应该使用一个线程,以便在运行中
while (!end) {
do {
try {
st=is.readLine();
} catch (InterruptedIOException ie) {
st="";
}
} while (!end && st.length()==0);
客户端构造器
soc = new Socket(IpAddress, 2999);
in = new BufferedReader(new InputStreamReader(soc.getInputStream()));
out = new PrintWriter(soc.getOutputStream());
addText("Connection up and running...");
soc.setSoTimeout(5000);
printWriterQueue = new PrintWriterQueue(this, out, in, 10000);
Thread th=new Thread(this);
th.start();
客户端也有一个线程,所以在run()
try {
do {
do {
try {
msg=in.readLine();
} catch (InterruptedIOException ie) {
msg="";
}
} while (!end && msg.length()==0);
if (!end) {
System.out.println("["+msg+"]");
}
} while (!end);
} catch (Exception exc) {
exc.printStackTrace();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.