2014-12-01 2 views
-1

를 사용하여 클라이언트 - 서버에 두 개의 문자열을 비교하지만, 주요 probelm 내가내가 자바 클라이언트 - 서버 응용 프로그램을 만드는 약 해요 자바

견인 문자열 사이이 내 코드입니다 비교할 수 없습니다입니다

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

예외가 발생 했습니까? 그렇다면 공유 할 수 있습니까? 또는 코드가 어떻게 실패하고 있습니까? –

+0

문장의 가치는 무엇입니까? – Pracede

+0

아니, 내가 비교할 때 허위 만 줄거야 !! –

답변

0

내가 추측해야만한다면 "123 ""123" 같은 문자열을 비교하는 것으로 의심됩니다. 당신이 그들을 인쇄 할 때 그들은 똑같이 보입니다. 그러나 사실 그들은 다른 내용을 가지고 있습니다. 어떤 길이의 편지를 인쇄 해보고 그 차이가 있는지 확인하십시오. \ n 또는 다른 공백 문자를 포함 할 수 있습니다. 스트링으로 변환하기 전에 스트립을 서버로 전송하거나 패킷의 페이로드에서 꺼내야 할 수도 있습니다. new String(byte[])을 수행하면 플랫폼 특정 형식으로 변환하는 것을 명심하십시오. 문자 인코딩을 사용하여 데이터를 보내는 두 대의 컴퓨터가 동일한 인코딩으로 문자를 보내고 있는지 확인해야 할 수 있습니다.

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

길이가 다르므로 맞습니다. 전달 길이 : 3 문장 : 1024 –

+0

당신은 1024 바이트의 byte [] 버퍼를 넘겨 주었고, 그 버퍼를 패킷의 3 문자로 채웠지 만 그 버퍼의 크기는 여전히 1024입니다. UDP는 고정 된 크기의 패킷이므로 가변 크기 페이로드를 처리하기 위해 데이터를 다르게 인코딩해야 할 수 있습니다. 패킷의 첫 번째 바이트에 길이를 보내거나 널 종결자를 사용하여 패킷 내에서 데이터의 끝을 나타낼 수 있습니다. 서버 쪽을 볼 수 없기 때문에 서버에서 패킷을 인코딩하는 방법을 추측 할 수 있습니다. – chubbsondubs

관련 문제