黑马程序员————网络编程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黑马程序员————网络编程相关的知识,希望对你有一定的参考价值。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-----

一、网络概述

网络编程三要素:

IP

 

IP地址是计算机或设备在网络上的唯一标识。

192.168.1.1 ip地址

255.255.255.0广播地址

Ipv4:4个字节 4个 0-255

 

端口

端口号是每个程序在设备上的唯一标识

常用默认端口号:

mysql:3306  

Oracle:1521

Tomcat:8080

QQ:4000  

FieQ:2425

Apache nginx:80

 

 

协议

为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

UDP:面向无连接,数据不安全,速度快64K。不区分客户端与服务端。

TCP :面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据

 

网络模型

OSI七层模型:

技术分享

 

TCP/IP参考模型

技术分享

 

Socket通信原理

 

Socket就是为网络服务提供的一种机制。

通信的两端都有Socekt.

数据在Socket两端通过IO传输。

 

 

 

 

二、UDP协议

流程:

 

练习:

 

/*聊天小程序
 *思路:收发同时执行多线程 
 *
*/
import java.io.*;
import java.net.*;
public class ChatDemo {
    public static void main(String[] args) throws SocketException {
        
        
        new Thread(new Send(new DatagramSocket())).start();
        new Thread(new Receive(new DatagramSocket(10001))).start();
    }

}


class Send implements Runnable { //接收信息线程
    
    private DatagramSocket ds ;  //定义成员变量Socket
    
    Send(DatagramSocket ds) {  //构造方法
        
        this.ds = ds;
    }
    public void run() {  //override run方法
        //键盘输入流
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = null; 
        
        
        try {
            
            while((line = br.readLine()) != null) {  //循环读取键盘输入,readLine方法为阻塞方法
                
                if(line.endsWith("bye"))  //结束标记
                    break; 
                
                byte[] buf = line.getBytes(); //每读一行存入字节数组
                //封包
                DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.2"),10001);
                ds.send(dp);//发包
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new RuntimeException("send fail");
        }
        
        
        
    }
}

class Receive implements Runnable {
    
private DatagramSocket ds ;
    
    Receive(DatagramSocket ds) {
        
        this.ds = ds;
    }
    
    
    
    public void run() {
        
try {
            
            while(true) {
                
                
                byte[] buf = new byte[1024];  //定义字节数组
                
                DatagramPacket dp = new DatagramPacket(buf, buf.length);//定义接受Packet
                ds.receive(dp);//接收已经存入本方Packet的数据包
                
                String ip = dp.getAddress().getHostAddress();
                String data = new String(dp.getData(),0,dp.getLength());//拆包
                
                System.out.println(ip+"....."+data);
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            throw new RuntimeException("send fail");
        }
        
    }
}

 

三、TCP协议

四、

应用层
表示层
对话层
传输层
网络层
数据链路层
物理层

以上是关于黑马程序员————网络编程的主要内容,如果未能解决你的问题,请参考以下文章

黑马程序猿 ---------- Java网络技术之 ---正則表達式 (Day06)

黑马---测试计算机网络

机器学习算法:正则化线性模型 | 黑马程序员

黑马程序员Linux运维培训怎么样?

虚拟化世界的黑马:NVDIMM以及DRMA网络

黑马程序员——————> 序列化流