Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Java中的基本套接字编程_Java_Sockets - Fatal编程技术网

Java中的基本套接字编程

Java中的基本套接字编程,java,sockets,Java,Sockets,我试图用Java创建一个非常简单的Socket/ServerSocket程序。下面列出了我的两个类,它们都在同一台机器上运行。问题是,连接似乎建立得很好,但当我尝试将套接字从客户端写入服务器时,似乎什么也没有发生。服务器永远不会从.readLine()中的返回,程序会停止。我不明白为什么会这样 以下是我的课程: TheServer.java: public class TheServer { public static void main(String[] args) { Buffe

我试图用Java创建一个非常简单的
Socket
/
ServerSocket
程序。下面列出了我的两个类,它们都在同一台机器上运行。问题是,连接似乎建立得很好,但当我尝试将套接字从客户端写入服务器时,似乎什么也没有发生。服务器永远不会从.readLine()中的
返回,程序会停止。我不明白为什么会这样

以下是我的课程:

TheServer.java:

public class TheServer {
  public static void main(String[] args) {
    BufferedReader in = null;
    PrintWriter out = null;

    try {
        ServerSocket serv = new ServerSocket(2255);
        Socket sock = serv.accept();
        in = new BufferedReader(
                new InputStreamReader(sock.getInputStream()));
        out = new PrintWriter(sock.getOutputStream());

    } catch (IOException e) {
        e.printStackTrace();
    }

    System.out.println("Connection established by Server");

    try {
        String line;
        while ((line = in.readLine()) != "Bye") {
            System.out.println(line + "Received");
            out.println(line.toUpperCase());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

  }
}
TheClient.java:

public class theClient {
  public static void main(String[] args) {
    BufferedReader in = null;
    PrintWriter out = null;

    try {
        Socket sock = new Socket("localhost", 2255);
        in = new BufferedReader(
                new InputStreamReader(sock.getInputStream()));
        out = new PrintWriter(sock.getOutputStream());
    } catch (Exception e) {
        e.printStackTrace();
    }

    System.out.println("Connection established by Client");

    try {
        while (true) {
            BufferedReader read = new BufferedReader(new InputStreamReader(
                    System.in));
            String line = read.readLine();
            out.println(line.trim());
            System.out.println(in.readLine().trim());

            if (line == "Bye")
                break;
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

  }
}

对于PrintWriter对象,每次写入尝试后

    obj.flush();

对于PrintWriter对象,每次写入尝试后

    obj.flush();

对于PrintWriter对象,每次写入尝试后

    obj.flush();

对于PrintWriter对象,每次写入尝试后

    obj.flush();

您是否正在传递数据中的行结束符(\n)?我想我以前也遇到过这种情况。由于您正在读取每侧的行,因此需要发送下线。
println()
在它发送的每一行上都附加一个下线。我运行了修复程序,看起来它可以正常工作。不过,看来终止合同的情况并非如此“Bye”可能需要-->while(!(line=in.readLine()).equalsIgnoreCase(“Bye”){是否在数据中传递一个行尾(\n)?我想我过去也遇到过这种情况。由于您正在读取每边的行,因此需要发送EOL。
println()
向它发送的每一行追加一个EOL。我运行了修复程序,看起来它正常工作。但是,看起来终止案例不正常。!=“Bye”可能需要-->而(!(line=in.readLine()).equalsIgnoreCase(“Bye”){您是否正在通过一行的结尾(\n)在数据中?我想我在过去也遇到过这种情况。由于您正在读取每一侧的行,因此需要发送EOL。
println()
在它发送的每一行上附加一个EOL。我运行了修复程序,看起来它可以正常工作。但看起来终止情况不一样。!=“Bye”可能需要-->而(!(line=in.readLine()).equalsIgnoreCase(“Bye”){您是否在数据中传递了一个行尾(\n)?我想我以前也遇到过这种情况。由于您正在读取每边的行,因此需要发送EOL。
println()
将EOL附加到它发送的每一行。我运行了修复程序,看起来它可以工作。但看起来终止案例没有。!=“Bye”可能需要-->while(!(line=in.readLine()).equalsIgnoreCase(“Bye”)){