簡體   English   中英

從客戶端向服務器Java發送整數

[英]Send integer from client to server Java

晚上好,我把這台服務器放在這里,

http服務器

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.concurrent.atomic.AtomicInteger;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class httpServer {

public static void main(String[] args) throws Exception {
    HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/test", new MyHandler());
    server.setExecutor(null); // creates a default executor
    server.start();
    //NimServer nimserver = new NimServer(32778);
    //nimserver.serve();

}

static class MyHandler implements HttpHandler {
    AtomicInteger atomicInteger = new AtomicInteger(0); 
    int theValue = atomicInteger.get(); 
    @Override
    public void handle(final HttpExchange t) throws IOException {
        final String response;

        final String requestMethod = t.getRequestMethod();
        if ("GET".equals(requestMethod)) {
            response = String.format("Besuche: %d%n", atomicInteger.addAndGet(1));
        }
        else if ("POST".equals(requestMethod)) {
            atomicInteger.set(0);
            response = "Reset to 0";

        }
        else {
            throw new IOException("Unsupported method");
        }

        t.sendResponseHeaders(200, response.length());
        final OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}
}

和這個客戶在這里

httpClient

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

public class httpClient {

static int clientno = 0;

public static void main(String[] args) throws Exception {

System.out.println(clientno);

URL test = new URL("http://localhost:8000/test");
HttpURLConnection connect = (HttpURLConnection) test.openConnection();
connect.setRequestMethod("POST");
BufferedReader in = new BufferedReader(new   InputStreamReader(connect.getInputStream()));
String inputLine;







while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine);
in.close();

}
}

現在我想將int clientno從客戶端發送到服務器,服務器應該像++一樣將其計數並將其發送回客戶端。 我讀了很多有關Dataoutputstream的內容,但始終包含套接字。 有沒有插座就可以嗎?

在服務器端,您必須在“ POST”處理程序中調用t.getRequestBody() -這將為您提供客戶端輸入。 使用BufferedReader (如果基於文本Integer.valueOf(stream.readLine()) )或DataInputStream (如果基於二進制文件stream.readInt() )都可以讀取數字。 同樣,通過t.getResponseBody()您可以將輸出輸出到客戶端,並以類似的方式寫入數字。

對於客戶端, HttpURLConnection具有getInputStream()getOutputStream() ,您需要clientNumber在服務器中一樣向其寫入clientNumber

暫無
暫無

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

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