网络原理-TCP

UDP网络编程:                        主动发送请求的一方为客户端

DatagramSocket-->客户端/服务器端(被动接受请求的一端)  服务器端要有一个固定的端口号

DatagramPacket-->几个重要的方法send()发送消息  recieve()  接收消息

TCP编程(主流):

服务器端创建:ServerSocket     客户端创建:Socket

读取消息:BufferedReader    Buffered(缓冲区):高效的收发消息,联想菜鸟驿站             写入消息:BufferedWritter

TCP既有发送缓冲区,也有接收缓冲区。UDP只有接受缓冲区,没有发送缓冲区。这也是他们的区别。

实现自己的HTTP服务器

实现自定义的HTTP服务器的关键是:

遵循HTTP协议——> request1.首行(方法类型 uri HTTP版本号)

2.head

3.空行

4.body

response :  1.首行(HTTP版本号 状态码  状态描述符) 

2.head (ContentType:text/html  ContentLength:xx字节大小)

3.空行 

4.返回信息

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

//自定义HTTP服务器
//根据uri内容返回不同的信息,如果uri中包含了404,则给浏览器输出未找到此页面,包含200,返回你好,世界!
public class MyHTTP {
    //端口号
    public static final int port=9004;
    public static void main(String[] args) throws IOException {
        //1.创建一个TCP服务器
        ServerSocket serverSocket=new ServerSocket(port);
        System.out.println("服务器已启动");
        //2.等待客户端连接
        Socket socket=serverSocket.accept();
        //3.构建读写对象
        try(BufferedReader reader=new BufferedReader(
                new InputStreamReader(socket.getInputStream()));
            BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))
        ){
            //得到客户端信息
            //得到首行信息
            String firstLine=reader.readLine();
            String[] fLingArr=firstLine.split(" ");
            //方法类型
            String method=fLingArr[0];
            //uri
            String uri=fLingArr[1];
            //http版本号
            String httpVersion=fLingArr[2];
            System.out.println(String.format("首行信息:方法类型:%s,uri:%s,HTTP版本号:%s",method,uri,httpVersion));
            //5.构建返回内容
            String content="";
            if(uri.contains("404")){
                content="<h1>没有找到此页面</h1>";
            }else if(uri.contains("200")){
                content="<h1>你好世界</h1>";
            }
            //6.内容输出
            //输出首行信息
            writer.write(String.format("%s 200 ok",httpVersion+"\n"));
            //输出head
            writer .write("Content-Type:text/html;charset=utf-8\n");
            writer.write("Content-Length: "+content.getBytes().length+"\n");
            //输出空行
            writer.write("\n");
            writer.write(content);
            writer.flush();
        }
    }
}

服务器端:http+127.0.0.1+端口号+uri(404/200)

如何发布具体请回顾4-15🐕

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

little-peter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值