【问题标题】:Java socket issue with client and server客户端和服务器的 Java 套接字问题
【发布时间】:2014-04-05 10:50:50
【问题描述】:

我在比较从客户端发送到服务器的字符串时遇到问题。我正在尝试从客户端读取消息“HELLO”,然后从服务器回复 hello。我的问题是,当我在服务器类中使用 if 语句时,我总是在点击 else。我相信我无法理解哪些行正在收集数据或只是打印。同时要做一些研究,我想学习这个好。任何想法,为什么,提前谢谢你?

服务器类:

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

public class Server {

    public static void main(String[] args) throws Exception
    {
        Server myServer = new Server();
        myServer.run();
    }

    public void run() throws Exception
    {

        //Initializes the port the serverSocket will be on
        ServerSocket serverSocket = new ServerSocket(4200);
            System.out.println("The Server is waiting for a client on port 4200");
        //Accepts the connection for the client socket
        Socket socket = serverSocket.accept();

        InputStreamReader ir = new InputStreamReader(socket.getInputStream());
        BufferedReader br = new BufferedReader(ir);
        String message = br.readLine();
        //Confirms that the message was received
        System.out.println(message);

            if(message == "HELLO")
            {
                PrintStream ps = new PrintStream(socket.getOutputStream());
                ps.println("Received our hello message.");
            }
            else
            {
                PrintStream ps = new PrintStream(socket.getOutputStream());
                ps.println("Did not receive your hello message");
            }
    }

}

客户端类:

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

public class Client {

    public static void main(String[] args) throws Exception
    {
        Client myClient = new Client();
        myClient.run();
    }

    public void run() throws Exception
    {
        Socket clientSocket = new Socket("cmps329.csit.selu.edu", 4200);
        //Sends message to the server
        PrintStream ps = new PrintStream(clientSocket.getOutputStream());
        ps.println("HELLO");
        //Reads and displays response from server
        InputStreamReader ir = new InputStreamReader(clientSocket.getInputStream());
        BufferedReader br = new BufferedReader(ir);
        String message = br.readLine();
        System.out.println(message);        
    }

}

【问题讨论】:

标签: java sockets client inputstream bufferedreader


【解决方案1】:

使用

if (message.equals("HELLO"))

请参阅How do I compare strings in Java? 了解原因。

【讨论】:

  • 完美大声笑,这么容易错过谢谢。您是否还知道我是否能够使用扫描仪在命令行中读取?因此,不是客户端自动发送消息,而是我可以在 HELLO 中输入?...计时器到时将标记为答案
  • 您可以对 main 方法使用参数,除非客户端应该保持运行。
  • 啊,保持它运行是我需要研究的。再次感谢您的帮助,先生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
  • 1970-01-01
  • 2016-12-21
  • 2011-09-21
  • 1970-01-01
  • 2012-06-05
相关资源
最近更新 更多