简单套接字客户端和服务器程序不工作

时间:2016-06-10 02:41:05

标签: java

我是java的新手并学习如何创建一个简单的服务器/客户端echo程序,但它似乎没有正常运行。相反,当我运行服务器然后客户端它在“网络正在读取...”后卡住了,但服务器实际上没有返回任何东西。感谢任何帮助,下面是我的服务器和客户端代码。

客户端:

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

public class Client {

public static void main(String[] args) {

    try{
        Socket socket = new Socket("localhost", 1234);
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        Scanner s = new Scanner(System.in);
        String input;

        while ((input = s.next())!= null){
        //  String input = s.next();

            out.println(input);

            System.out.println("Networking is reading....");

            System.out.println(in.readLine());
            System.out.println("please");
        }

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

}

}

服务器:

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

public class Server {

public static void main(String[] args) {

    try{
        ServerSocket serverSocket = new ServerSocket(1234);
        Socket clientSocket = serverSocket.accept();

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        String line;
        while ((line = in.readLine()) != null){
        //  String line = in.readLine();
            out.println(line);
        }

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

}

}

1 个答案:

答案 0 :(得分:0)

试试这个

PrintWriter out = new PrintWriter( socket.getOutputStream(), true );
  • 并在客户端和服务器上执行此操作

docs,这里的true将启用自动刷新。

当您需要逐行发送数据时,启用autoflush非常有用。

<强>替代

另一种方法是手动将缓冲液冲洗到电线上。

out.flush();

原因是你在本地机器上写入一个缓冲区 - 它只会在你刷新缓冲区时发送一帧数据。