繁体   English   中英

如何从服务器中的客户端接收输入?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM