2016-11-28 2 views
0

Вот простой UDP server, о котором я говорю.Как проверить, совпадает ли отправленное сообщение с полученным сообщением на простом UDP-сервере

Как мы можем проверить, является ли строка, которую мы отправляем через клиента, такая же, как полученная? Я пробовал простое условие if, чтобы проверить, равны ли они, используя метод строк equal(), но даже при том, что сообщения одинаковы, если условие имеет значение false, даже при сравнении отправленных и полученных сообщений с использованием .toString() метод.

import java.net.*; 
import java.io.*; 
import java.util.Arrays; 

public class UDPClient { 
public static void main(String args[]) throws Exception 
    { 
     BufferedReader inFromUser = 
     new BufferedReader(new InputStreamReader(System.in)); 
     DatagramSocket clientSocket = new DatagramSocket(); 
     InetAddress IPAddress = InetAddress.getByName("localhost"); 
     byte[] sendData = new byte[1024]; 
     byte[] receiveData = new byte[1024]; 
     String sentence = inFromUser.readLine(); 
     sendData = sentence.getBytes(); 
     DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 7777); 
     clientSocket.send(sendPacket); 
     DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 
     clientSocket.receive(receivePacket); 
     String sentSentence = new String(sendPacket.getData()); 
     String receivedSentence = new String(receivePacket.getData()); 
     System.out.println("FROM SERVER:" + receivedSentence + "\n" + "IP Address: " + receivePacket.getAddress() + "\n" + 
       "Message Size: " + receivePacket.getData().length); 
     clientSocket.close(); 
     System.out.println(sentSentence + " " + receivedSentence); 

     if(sentSentence.equals(receivedSentence.toString())) 
     System.out.println("OK" + " " + sentence + " " + receivedSentence); 
     else 
      System.out.println("FAILED"); 

    } 
} 
+0

Итак, вы делаете это неправильно. Отправьте код. – EJP

+0

Хорошо, я добавил код. – cheroz

ответ

1
String sentSentence = new String(sendPacket.getData()); 
String receivedSentence = new String(receivePacket.getData()); 

Как и следовало ожидать, вы не строить эти Strings правильно. Это должно быть:

String sentSentence = new String(sendPacket.getData(), sendPacket.getOffset(), sendPacket.getLength()); 
String receivedSentence = new String(receivePacket.getData(), receivePacket.getOffset(), receivePacket.getLength()); 
+0

Все еще получают FAILED:/ – cheroz

+1

Так они разные. Вероятно, вы ошибаетесь на другом конце. NB 'receivedSentence.toString()' бессмысленно. Это уже строка. – EJP

+0

Да, вы были правы, ошибка была на стороне сервера. Теперь он отображает OK – cheroz

Смежные вопросы