【问题标题】:Client-Server Program does not work客户端-服务器程序不起作用
【发布时间】:2015-04-20 19:42:38
【问题描述】:

我是java新手。我想做服务器-客户端套接字编程。在这里,客户端发送消息,服务器回复消息。我写了以下代码:

客户端.java

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

class Client 
{
    public static void main(String[] args) 
    {
        try
        {
            String host = "localhost";
            Socket socket = new Socket(host,25000);

            OutputStream os = socket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);

            BufferedWriter bufferedwriter = new BufferedWriter(osw);
            String sendMessage = "hello from Client";

            bufferedwriter.write(sendMessage);
            // bufferedwriter.flush();

            InputStream is = socket.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);

            String input = br.readLine();

            System.out.println("The message recieved from server is : "+ input);
            socket.close();


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



    }
}

服务器.java

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

class Server 
{
    private static Socket socket;
    public static void main(String[] args) 
    {
        try 
        {
            ServerSocket serverSocket = new ServerSocket(25000);
            System.out.println("Server started listening at port 25000");
            socket = serverSocket.accept();

            InputStream is = socket.getInputStream();

            InputStreamReader isr = new InputStreamReader(is);

            BufferedReader br = new BufferedReader(isr);

            String input = br.readLine();

            System.out.println("The message recieved from client is : "+ input);


            OutputStream os = socket.getOutputStream();

            OutputStreamWriter osw = new OutputStreamWriter(os);

            BufferedWriter bufferedwriter = new BufferedWriter(osw);
            String sendMessage = "hello from Server";

            bufferedwriter.write(sendMessage);
            bufferedwriter.flush();


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

程序的输出如下所示:

roomno311@thedestiny:~/Desktop/java$ java 服务器 服务器开始监听 25000 端口 roomno311@thedestiny:~/Desktop/java$ java Client

上面的代码介于两者之间。我需要按 Ctrl + C 来关闭这些程序。请帮我解决这个问题。

【问题讨论】:

  • 旁注 - 在出现异常的情况下,您不会关闭套接字。

标签: java sockets network-programming


【解决方案1】:

您的客户端程序中的readLine 语句需要从服务器发送一个以换行符\n 字符结尾的相应字符串。

【讨论】:

  • 已更改 String sendMessage = "来自服务器的你好" + "\n"; 和 ** String sendMessage = "来自服务器的你好" + "\n"; ** 但它不起作用
【解决方案2】:

由于您使用的是 BufferedWriter,因此您也可以像这样使用 newLine 方法。

在您的客户端中,之后:String sendMessage = "hello from Client";

使用:

bufferedwriter.write(sendMessage);
bufferedwriter.newLine();
bufferedwriter.flush();

同样在你的服务器代码之后:String sendMessage = "hello from Server";

用户:

bufferedwriter.write(sendMessage);
bufferedwriter.newLine();
bufferedwriter.flush();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-13
    • 1970-01-01
    • 2019-12-29
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多