簡體   English   中英

對客戶端進行編程,以使用Java用UDP連接將HTTP請求消息發送到服務器

[英]programming a client to send a HTTP request message to a server with a UDP connection in Java

我需要客戶端將http請求消息發送到服務器,但是我不知道如何使用http 1.1在UDP中進行操作

它需要在method字段中有一個特定的單詞,在url字段中有一個特定的名稱,在version字段中有一個特定的整數。

因此,如果我想發送一個http請求消息,該消息在method字段中具有“ inform”,在url字段中具有“ host1”,而在version字段中具有40000,該怎么辦?

這就是我現在擁有的,但是它不使用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();

您必須為HTTP協議實現IEEE RFC? 還是僅僅是基於UDP的模擬?

HTTP是在TCP / IP上運行的基於文本傳輸的協議。 HTTP默認端口為80,但是您可以通過該端口“運行”數據報服務。

丟失TCP / IP的某些特定且有用的方式,例如提供保證,訂購和正確的序列化。 您真的必須這樣做嗎?

即使這樣做,您也將需要編寫一個使用UDP在該端口上偵聽的“服務”,所有Web服務器都使用TCP,因為這是默認設置,並在RFC中指定。

另外,請閱讀此內容以獲取有關以下內容的更多信息:

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

或者,如果您只需要一個簡單的通過UDP發送和接收數據的應用程序,則可以使用幾個示例在網絡上進行操作。

抱歉,如果沒有幫助。

(a)您將需要使用UDP的HTTP服務器。 你真的有嗎?

(b)您需要在此客戶端代碼中實現HTTP協議。 我看不到有任何嘗試。 您要做的只是發送直接從控制台讀取的行。 根本沒有HTTP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM