Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
out.println();Java SocketServer不工作_Java_Serversocket_Println - Fatal编程技术网

out.println();Java SocketServer不工作

out.println();Java SocketServer不工作,java,serversocket,println,Java,Serversocket,Println,我试图通过客户端向服务器发送消息,但在服务器上看不到消息。这表明它连接正确。我认为问题与此有关,在客户端类中,但我不太确定。如果有人有解决办法,请告诉我 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String send = reader.readLine(); out.println(send); out.flush(); 这是客户端类: package com.evolution

我试图通过客户端向服务器发送消息,但在服务器上看不到消息。这表明它连接正确。我认为问题与此有关,在客户端类中,但我不太确定。如果有人有解决办法,请告诉我

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String send = reader.readLine();
out.println(send);
out.flush();
这是客户端类:

package com.evolution.client;

import java.net.*;
import java.io.*;
public class Client {
   private Socket client;
   private PrintWriter out;
   private BufferedReader in;

   public static void main(String[] args) {
       Client client = new Client();
       client.startConnection("localhost", 325);
   }
   public void startConnection(String ip, int port) {
       try {
           client = new Socket(ip, port);
       out = new PrintWriter(client.getOutputStream(), true);
       in = new BufferedReader(new InputStreamReader(client.getInputStream()));
       System.out.println("Connected");
       out.println("Connection started from, " + client.getLocalAddress());
       out.flush();
       while (true) {
           String recieve = in.readLine();
           System.out.println(recieve);

           BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
           String send = reader.readLine();
           out.println(send);
           out.flush();
       }
            } catch (Exception e) {
               System.out.println(e);
        }
   }

   public void stopConnection() {
       try {
       in.close();
       out.close();
       client.close();
    }
       catch (Exception e) {

        }
}   
}
这是服务器类文件:

package com.evolution.server;

import java.io.*;
import java.net.*;

public class Server {
private int port = 325;
private ServerSocket server;
private Socket client;
private PrintWriter out;
private BufferedReader in;

public static void main(String[] args) throws IOException {
    Server server = new Server();
    System.out.println("Start Up!");
    server.start(server.port);
}

public void start(int port) throws IOException  {
    server = new ServerSocket(port);
    try {
        while (true) { //always runs unless break;
            client = server.accept();
               out = new PrintWriter(client.getOutputStream(), true);
                in = new BufferedReader(new 
InputStreamReader(client.getInputStream()));
                //out - send output 

                String inputLine;
                while ((inputLine = in.readLine()) != null) {
                    if (inputLine.equalsIgnoreCase("shutdown"))
                        stop();
                    System.out.println(inputLine);
                }
        }
    }   
    finally { //runs no matter what after try {}
        server.close();
            }
    }
public void stop() {
    try {
        in.close();
        out.close();
        client.close();
        server.close();
        System.exit(0);
    }
   catch (Exception e) {  
   }
}
}
如果您有任何可能的解决方案,请告诉我。

线路 字符串recieve=in.readLine(); 在客户端上,将阻止()。 因为服务器没有发送更多的行,所以代码被卡住了

删除此行允许您将消息从客户端发送到服务器。

stop()方法将跳过第一个异常的所有剩余步骤。您应该将每个.close()调用包装在自己的try..catch块中,或者编写一个函数来关闭InputStream/OutputStream/Socket。