客户端服务器应用程序无效

时间:2014-03-06 16:59:45

标签: java

我正在尝试编写一个简单的客户端/服务器Echo应用程序,我的客户端似乎正在发送输入,但服务器似乎没有将其接收并将其发回。

这是服务器:

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

public class Server 
{   
    public static void main(String args[])  throws Exception
    {
        int port = 2000;
        ServerSocket serverSocket;
        Socket client;

        BufferedReader is = null;
        BufferedWriter os = null;

        serverSocket = new ServerSocket(port);
        System.err.println("Server established on port " + port);

        client = serverSocket.accept();
        System.err.println("Client connected");

        is = new BufferedReader(
                new InputStreamReader(client.getInputStream()));
        os = new BufferedWriter(
                new OutputStreamWriter(client.getOutputStream()));
        System.err.println("Server established on port " + port);

        String message = "";

        while((message = is.readLine()) != null) 
        {
            System.err.println("Messaged received " + message);
            os.write(message);
        }

        is.close();
        os.close();
        serverSocket.close();
    }
}

然后,客户端看起来像这样:

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

public class Client 
{
    public static void main(String args[]) throws Exception 
    {
        String host = "localhost";
        int port = 2000;
        Socket socket;

        socket = new Socket(host, port);

        BufferedReader is = new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
        BufferedWriter os = new BufferedWriter(
                new OutputStreamWriter(socket.getOutputStream()));
        System.err.println("Connected to " + host + " on port " + port);

        BufferedReader br = 
                new BufferedReader(new InputStreamReader(System.in));

        String input = "";

        while((input = br.readLine()) != null) 
        {
            System.out.println("Sending " + input);
            os.write(input);
            System.out.println("Receiving " + is.read());
        }

        is.close();
        os.close();
        socket.close();
    }   
}

我错过了什么,我确信我忽略了一些简单的事情。

1 个答案:

答案 0 :(得分:2)

在客户端中,尝试使用最终换行符char:

编写消息
os.write(input+"\n");

(或同时致电newLine()

那是因为服务器正在逐行阅读。