2014-03-04 80 views
0

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

服务器类:

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"); 
      } 
    } 

} 

Client类:

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);   
    } 

} 
+0

可能的重复[如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – EJP

回答

1

使用

if (message.equals("HELLO")) 

对于为什么见How do I compare strings in Java?

+1

完美的大声笑,这么简单想念谢谢的事情。你是否也知道我是否能够使用扫描仪读取命令行?因此,而不是客户端自动发送消息,我将能够输入HELLO?...定时器启动时将标记为答案 – Shawn

+0

除非客户端应该保持运行,否则您可以将参数用于主方法。 – stevedbrown

+0

啊保持运行是我需要看看。再次感谢您的帮助,先生。 – Shawn