服务端与客户端的简单代码实现

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class 一个简单的HTTP客户端 {
public static void main(String[] args) throws IOException {
// HTTP 请求 = 请求行 + 请求头们 + 可选的请求体
// 请求行 = 方法 + URL + 版本
// GET / HTTP/1.0\r\n
// \r\n
String request = “GET / HTTP/1.0\r\n”
+ “\r\n”;

    // 想办法通过 OS 提供的服务(经由传输层,将数据发送给 127.0.0.1 主机上的 8080 端口代表的进程)
    Socket socket = new Socket("182.254.132.183", 8080);
    InputStream is = socket.getInputStream();   // 获取对方发送过来的数据
    OutputStream os = socket.getOutputStream(); // 发送给对方的数据

    // 发送
    byte[] message = request.getBytes("utf-8");
    os.write(message);
    os.flush();

    // 接受
    Scanner scanner = new Scanner(is, "UTF-8");
    while (scanner.hasNextLine()) {
        String line = scanner.nextLine();
        System.out.println(line);
    }

    // 关闭
    socket.close();
}

}

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class HTTPServer {
public static void main(String[] args) throws IOException {
String body = “”
+ “”
+ “”
+ “老师的网页
+ “”
+ “”
+ “”
+ “

狗狗


+ “

福特


+ “”
+ “”;
String response = “HTTP/1.0 200 OK\r\n”
+ “Content-Type: text/html; charset=utf-8\r\n”
+ “Content-Length: 146\r\n”
+ “\r\n”
+ body;

    ServerSocket serverSocket = new ServerSocket(8888);
    // 可以不断的进行 请求-响应周期
    while (true) {
        // 开始一次通信 = 读取请求 + 发送响应
        Socket socket = serverSocket.accept();
        InputStream is = socket.getInputStream();
        OutputStream os = socket.getOutputStream();

        // 读取请求
        Scanner scanner = new Scanner(is, "UTF-8");
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            System.out.println(line);
            if (line.isEmpty()) {
                // 读取到空行,代表请求结束
                break;
            }
        }

        // 发送响应
        byte[] bytes = response.getBytes("UTF-8");
        os.write(bytes);
        os.flush();

        socket.close();
        // 结束一次通信
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值