------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协议
四、
应用层 |
表示层 |
对话层 |
传输层 |
网络层 |
数据链路层 |
物理层 |
时间: 2024-12-20 11:06:37