Java UDP-сервер не декодирует правильный IP-адрес - PullRequest
1 голос
/ 03 марта 2011

Я пытаюсь создать клиент-серверное приложение, используя java UDP.когда сервер принимает сообщение от клиента, он должен декодировать IP-адрес и номер порта, чтобы он мог отправить данные обратно.проблема заключается в том, когда IP-адрес декодируется из пакета, имеет / впереди, поэтому он не может вернуть сообщение.вывод для программы следующий:

ожидание получения данных: сообщение /178.179.35.1 56798

как мне удалить / с начала IP-адреса, декодируемого из пакета?СПАСИБО!

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

class UDPServer {

    public static void main(String args[]) throws Exception {
        DatagramSocket serverSocket = new DatagramSocket(9876);
        byte[] receiveData = new byte[1024];
        byte[] sendData = new byte[1024];
        while(true) {
            System.out.println("waiting for data");
            DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length);

            serverSocket.receive(receivePacket);
            String sentence = new String( receivePacket.getData());
            System.out.println("RECEIVED: " + sentence);            

            InetAddress IPAddress = receivePacket.getAddress();
            System.out.println(IPAddress);
            SocketAddress newtry = receivePacket.getSocketAddress();
            int port = receivePacket.getPort();
            System.out.println(port);

            String capitalizedSentence = sentence.toUpperCase();
            sendData = capitalizedSentence.getBytes();
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, newtry);
            serverSocket.send(sendPacket);
        }
    }
}

Ответы [ 3 ]

1 голос
/ 04 марта 2011

Вам не нужно ничего этого делать.DatagramPacket уже содержит IP-адрес и порт источника.Просто измените data и отправьте тот же DatagramPacket.На самом деле ваш код, вероятно, должен работать как есть - если он не работает, причина не в /, это только то, что отображается.

1 голос
/ 03 марта 2011

Используйте InetAddress.getHostAddress () , чтобы получить текстовое представление IP.

Однако, взглянув на свой код, вы можете вставить полученную ошибку.В любом случае вы должны просто использовать объект InetAddress, чтобы могло произойти что-то еще.

0 голосов
/ 05 августа 2011

Я использовал программу.Я не смог получить IP-адрес, когда мой IP-адрес был динамическим.Затем я обновил свой системный IP-адрес и для этого взял статический IP-адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...