java - Java从客户端发送整数到服务器

标签 java sockets http server client

晚上好,我这里有这台服务器,

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()您将输出发送到客户端并以类似的方式写入数字。

对于客户来说HttpURLConnectiongetInputStream()getOutputStream()您需要在其中写入 clientNumber与您在服务器中的操作类似。

关于java - Java从客户端发送整数到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33421559/

相关文章:

http - 将变量从一个 asp(经典 asp)页面传递到另一个 asp 页面,而不使用 URL 中的参数

Java servlet上传文件到 "Web Pages"文件夹

java - 在 java 代码中设置 -noverify 标志

PHP 流写入缓冲区

java - 套接字通过缓冲读取器读取,而不是在线拾取

java - 将多个参数作为一个 http 查询参数传递的最佳方法是什么?

java - 建立APK:建立APK时发生错误。您可以在 'Messages' View 中找到错误

Java正则表达式文件名不重复

在 EPIPE 之后关闭套接字文件描述符

.net - 如何以编程方式删除 WebClient 中的 2 个连接限制