zoukankan      html  css  js  c++  java
  • Java—网络连接协议

    一、TCP协议

    TCP的IP地址和端口号.png


    TCP建立连接.png


    TCP如何发放IP(DHCP).png

    端口号&DNS.png


    私网&公网.png

    注:一般给对方发送IP地址,一般是为公网IP(因为有可能不在同个私网/局域网);若确定在同个私网中,则可以发送私网IP地址

    二、HTTP协议

    HTTP协议.png


    HTTP的数据结构.png

    http协议的原理(通过socket来封装请求和响应内容)

    public class HttpServer {
    	public static void main(String[] args) throws IOException{
            ServerSocket serverSocket = new ServerSocket(8888);
          //一直监听,直到受到停止的命令
            while (true) {
                Socket socket = null;
                try {
                	//如果没有请求,会一直hold在这里等待,有客户端请求的时候才会继续往下执行
                    socket = serverSocket.accept();
                    
                    //使用多线程技术优化(线程池)
                    // log
            		BufferedReader bufferedReader = new BufferedReader(
            				//获取输入流(请求)
            		        new InputStreamReader(socket.getInputStream()));
            		StringBuilder stringBuilder = new StringBuilder();
            		String line = null;
            		while ((line = bufferedReader.readLine()) != null
            				//得到请求的内容,注意这里作两个判断非空和""都要,只判断null会有问题
            		        ) {
            			System.out.println(line);
            		    stringBuilder.append(line).append("<br>");
            		}
            		String result = stringBuilder.toString();
    //                        System.out.println(result);
            		// echo
            		//这里第二个参数表示自动刷新缓存
            		PrintWriter printWriter = new PrintWriter(
            		        socket.getOutputStream(), true);
            		printWriter.print("HTTP/1.1 200 OK 
    ");
            		printWriter.print("Content-Type:text/html;charset=utf-8  
    ");
            		printWriter.print("
    ");
            		printWriter.print("<h5>你刚才发送的请求数据是:<br> 
    ");
            		printWriter.write(result);//将日志输出到浏览器
            		printWriter.print("</h5> 
    ");
            		// release
            		printWriter.close();
            		bufferedReader.close();
            		socket.close();
            		
                } catch (IOException e) {
                    e.printStackTrace();
                    if(serverSocket != null) {
                    	serverSocket.close();
                    }
                }
            }
        }
    
    }
    

    socket:阻塞

    nio:非阻塞

    三、并发量的相关处理

    如何处理并发量.png

    四、常见的网络攻击

    一些网络攻击.png

  • 相关阅读:
    第四周编程总结
    第三周作业编程总结
    第二周基础作业
    【C++学习教程03】面向对象编程的基本知识&内联函数
    【C++学习教程02】运算符
    【C++学习教程01】C++命名空间重名&函数原型&字符类型&数据类型
    为什么匿名内部类只能访问其所在方法中的final变量
    android通过socket上传文件
    android socket编程
    test markdown-here chrome 插件
  • 原文地址:https://www.cnblogs.com/nadou/p/13992702.html
Copyright © 2011-2022 走看看