2011-12-29 76 views
1

对于此应用程序,用户发出一条命令并且服务器发送一个回复。 if声明由于某种原因而不起作用,并且对于其运行的每个输入sentance = "Unknown Command" + '\n';。我想知道我做错了什么。Java TCP if语句

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

// SERVER 

class StartingPoint { 
    public static void main(String argv[]) throws Exception{ 

     double srvversion = 0.1; 
     double cliversion = 0.1; 

     String clientSentence; 
     String sentance = null; 
     String capitalizedSentence; 

     //Commands cmds = new Commands(); 

     ServerSocket welcomeSocket = new ServerSocket(6789); 
     System.out.println("Server Started"); 
     while (true) { 

      Socket connectionSocket = welcomeSocket.accept(); 
      BufferedReader inFromClient = new BufferedReader(
        new InputStreamReader(connectionSocket.getInputStream())); 
      DataOutputStream outToClient = new DataOutputStream(
        connectionSocket.getOutputStream()); 
      clientSentence = inFromClient.readLine(); 
      System.out.println("Received: " + clientSentence); 
      capitalizedSentence = clientSentence.toUpperCase(); 


      if(capitalizedSentence == "VERSION"){ 
       sentance = "Current Server Version: " + srvversion 
         + " | Current Client Version: " + cliversion + '\n'; 
      }else{ 
       sentance = "Unknown Command" + '\n'; 
      } 

      outToClient.writeBytes(sentance); 
      System.out.println("Sent: " + sentance); 
     } 
    } 
     } 
+0

你或许应该打印出什么无效的命令_was_ - - 至少在试图调试这个时候...... – sarnold 2011-12-29 05:43:12

回答

2

您应该使用.equals()方法比较字符串,而不是使用==。

变化

if(capitalizedSentence == "VERSION"){ 

if(capitalizedSentence.equals("VERSION")){ 
+0

为此而欢呼 – Sock 2011-12-29 05:59:37

1

比较字符串,你必须使用.equals()方法如下:

String str1; 
String str2; 

if (str1.equals(str2)) // do something 
else //do something else