2014-12-01 40 views
-1

我对做客户端 - 服务器应用程序在java中比较客户端 - 服务器两个字符串,但主要是万阿英,蒋达清我不能让用java

拖字符串之间的比较,这是我的代码

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

class UDPServer 
{ 
public static void main(String args[]) throws Exception 
    { 
    DatagramSocket serverSocket = new DatagramSocket(9876);//oepn datagram with port 
     byte[] receiveData = new byte[1024]; 
     byte[] sendData = new byte[1024]; 
     String pass = "123"; 
     int count = 0; 
     while(true) 
      { 
       DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);//get data 
       serverSocket.receive(receivePacket);//datagram socket 

       String sentence = new String(receivePacket.getData());//store string 
       //String sentence = receivePacket.getData().toString(); 
       if(sentence.equals("123")) 
       { 
        System.out.println(sentence.equals("123")); 
       } 
       else 
       { 
        System.out.println(sentence.equals("123")); 
       } 
       System.out.println("RECEIVED: " + sentence);//print it 
       InetAddress IPAddress = receivePacket.getAddress(); 
       int port = receivePacket.getPort(); 
       String capitalizedSentence = sentence.toUpperCase(); 
       sendData = capitalizedSentence.getBytes(); 
       DatagramPacket sendPacket = 
       new DatagramPacket(sendData, sendData.length, IPAddress, port); 
       serverSocket.send(sendPacket); 
      } 
    } 
} 

这里在这种方法它不与我合作sentence.equals("123")你能帮我做字符串比较吗?

+1

您是否收到异常?如果是这样,你能分享一下吗?或者代码如何失败? – 2014-12-01 19:37:40

+0

你能看出句子的价值吗? – Pracede 2014-12-01 19:46:06

+0

不,它只是让我虚假,当我做比较! – 2014-12-01 19:46:08

回答

0

如果我不得不猜测,我怀疑你是比较类似于:"123 ""123"这将是不同的字符串。当你将它们打印出来时,它们看起来是一样的,但实际上它们有不同的内容。尝试打印一些长度sentence.length(),看看是否有所不同。它可能包含\ n或其他一些空白字符。您可能需要将其从发送到服务器的地方剥离,或将其从数据包的有效负载中提取出来,然后再将其转换为字符串。请记住,当您执行new String(byte[])时,您正在将平台特定格式的东西转换。您可能需要使用字符编码来确保发送数据的两台机器以相同的编码发送它们。

new String(byte[], String charset) 
+0

嘿,你是对的长度不同 通过长度:3句子:1024 – 2014-12-02 06:27:12

+0

这是因为你向它传递了一个1024字节的缓冲区,并将缓冲区填充到数据包中的3个字符,但该缓冲区的大小仍为1024。 UDP是一个固定大小的数据包,因此您可能需要对数据进行不同编码以处理可变大小的有效负载。可能在数据包的第一个字节中发送长度,或者使用空终止符来表示数据包内的数据结束。由于我们没有看到你的服务器端,我们只能猜测你是如何编码服务器上的数据包的。 – chubbsondubs 2014-12-03 18:39:03