программирование клиента для отправки сообщения HTTP-запроса на сервер с UDP-соединением в Java - PullRequest
0 голосов
/ 01 декабря 2010

Мне нужен клиент для отправки http-запроса на сервер, но я не знаю, как это сделать в UDP, используя http 1.1

. В поле метода должно быть определенное слово,конкретное имя в поле URL-адреса и определенное целое число в поле версии.

Так что, если я хочу отправить сообщение http-запроса, содержащее «inform» в поле метода, «host1» в поле url40000 в поле версии, как я могу это сделать?

Это то, что у меня сейчас, но он не использует http, я не знаю, как его изменить.

BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); 
        DatagramSocket clientSocket = new DatagramSocket();
        InetAddress IPAddress = InetAddress.getByName("THIS-PC"); 
        byte[] sendData = new byte[128]; 
        byte[] receiveData = new byte[128];
        System.out.println("Enter:");
        String request ="INFORM ";
        String sentence = inFromUser.readLine();
       // request.concat("/r/n");
        request.concat(sentence);
      //  request.concat("/r/n");
        sendData = sentence.getBytes(); 
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 40075); 

        clientSocket.send(sendPacket); 
       System.out.println("Packet sent");
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); 

        clientSocket.receive(receivePacket); 
        System.out.println("Packet received");
        String reply = new String(receivePacket.getData()); 

           System.out.println("FROM SERVER:" + reply); 
           clientSocket.close();

Ответы [ 2 ]

1 голос
/ 23 апреля 2012

Вы должны реализовать протокол IEEE RFC для HTTP? Или просто симуляция по UDP?

HTTP - это протокол, основанный на передаче текста, который работает по TCP / IP. Порт HTTP по умолчанию - 80, но вы можете «запустить» службу дейтаграмм через этот порт.

Потеря некоторых конкретных и полезных способов TCP / IP, таких как предоставление гарантии, заказа и правильной сериализации. Вы действительно должны это сделать?

Даже если это будет сделано, вам также потребуется написать «сервис», который прослушивает этот порт с использованием UDP, все веб-серверы работают с TCP, так как это по умолчанию и указано в RFC.

Кроме того, прочитайте это для получения дополнительной информации о:

http://www.w3.org/Protocols/rfc2616/rfc2616.html

Или, если вам просто нужно простое приложение, которое отправляет и получает данные через UDP, есть несколько примеров того, как это сделать в Интернете.

Извините, если ничего из этого не помогло.

0 голосов
/ 01 декабря 2010

(a) Вам понадобится HTTP-сервер, поддерживающий UDP. У тебя действительно есть это?

(b) Вам потребуется реализовать протокол HTTP в этом клиентском коде. Я не вижу никаких попыток сделать это. Все, что вы делаете, это отправляете строки, читаемые прямо из консоли. Нет HTTP вообще.

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