美文网首页Java
复习 13.网络编程

复习 13.网络编程

作者: 第二套广播体操 | 来源:发表于2019-03-16 12:37 被阅读0次

    C/S Client/Server 是指客户端和服务器结构 创建程序 QQ 迅雷等软件
    B/S Brower/Server 浏览器程序连接数据库服务器

    网络通信协议:TCP/IP 因特网互联协议
    CMD:ipconfig 查询本机IP

    端口号 不可重复 逻辑端口 可以使用软件查询端口号
    1 系统自动分配 2 主动请求

    范围0-65535 1024之间为系统端口 不可用
    mysql:3306
    Oracle:1521
    Tomcat:8080

    服务器:没有流 应该获取客户端的实例 利用客户端的IO流 和客户端进行交互

    套接字:包含IP地址和端口号的网络单位
    客户端和服务端交互 使用Socket中提供的网络流 不能自己创建
    服务器端必须明确:多个客户端和服务端交互 (使用多线程技术)

    html服务器:

    /**
     * @ClssName HtmlServer
     * @Autor Yu
     * @Description TODO
     * @Date 2019/3/15 16:35
     * Version 1.0
     * 172.20.35.60
     */
    public class HtmlServer {
        public static void main(String[] args) throws IOException {
    //        创建服务器实例
            ServerSocket serverSocket = new ServerSocket(10003);
    //        浏览器解析服务器回写的html页面 如果有图片我们需要多创建一个线程传送图片
    //        我们让服务器一直处于监听状态 客户端请求一次 服务器回写一次
            while (true) {
    //    接收访问客户端
                Socket socket = serverSocket.accept();
    
                new Thread(()-> {
                        try {
                            InputStream is = socket.getInputStream();
                            BufferedReader br = new BufferedReader(new InputStreamReader(is));
    //        获取反馈的第一行信息 GET /net/index.html HTTP/1.1
                            String line = br.readLine();
    //        对信息进行切割
                            String[] s = line.split(" ");
    //        把路径前面的/去掉
                            String htmlPath = s[1].substring(1);
    //        创建本地输入流构造方法绑定读取的html路径
                            FileInputStream fis = new FileInputStream(htmlPath);
    //        获取网络字节输出流
                            OutputStream os = socket.getOutputStream();
    //                     填写协议
                            os.write("HTTP/1.1 200 OK".getBytes());
                            os.write("Content-Type:text/html\r\n".getBytes());
                            os.write("\r\n".getBytes());//没有空格不解析
    //        读取本地网页 输出到浏览器客户端
                            int len = 0;
                            byte[] bytes = new byte[1024];
                            while ((len = fis.read(bytes)) != -1) {
                                os.write(bytes, 0, len);
                            }
    //        关闭本地输出流
                            fis.close();
    //                        关闭该连接的输出流
                            socket.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    
                }).start();
    
            }
        }
    }
    
    

    相关文章

      网友评论

        本文标题:复习 13.网络编程

        本文链接:https://www.haomeiwen.com/subject/eonjmqtx.html