网络编程 (概述)
计算机网络:
* 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络编程:
* 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
网络编程 (三要素:IP概述 (掌握))
* 每台设备在网络中的唯一标识 。
* 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。
* ipconfig :查看本机IP
* ping :测试连接
* IPv4 :4个字节组成,4个0-255;已用尽。
* IPv6 :8组,每组4个16进制数。
网络编程 (三要素:端口概述 (掌握))
* 每个程序在设备上的唯一标识 。
* 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台及其上,还要明确发到那个程序。
* 端口号的范围 :0-----65535
* 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本都被系统程序占用了。
网络编程 (三要素:协议 (掌握))
* 为计算机网络中进行数据交换而建立的规则,标准或约定的集合。
* UDP :面向无连接,数据不安全,速度快,不区分客户端和服务端。
* TCP : 面向连接 (三次握手),数据安全,速度略慢,分为客户端和服务端。
(三次握手:客户端先向服务端发起请求,服务端响应请求,传输数据)
网络编程 (Socket通信 (了解))
Socket套接字概述:
* 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一的标识符套接字。
* 通信的两端都有Socket。
* 网络通信其实就是Socket间的通信。
* 数据在两个Socket间通过IO流传输。
* Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己锁对应的IP和port。
网络编程 (UDP传输(了解))
1. 发送Send
* 创建DatagramSocket ,随机端口号。
* 创建DatagramPacket , 指定数据 ,长度 ,地址,端口。
* 使用DatagramSocket发送DatagramPacket。
* 关闭DatagramSocket 。
public class Dome1_Send { public static void main(String[] args) throws Exception { String str = "新年快乐"; DatagramSocket socket = new DatagramSocket(); // 创建Socket DatagramPacket packet = // 创建Packet new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 8888); socket.send(packet); // 将数据发出去 socket.close(); System.out.println("aaa"); }
2.接收Receive
* 创建DatagramSocket ,指定端口号。
* 创建DatagramPacket , 指定数组 ,长度 。
* 使用DatagramSocket发送DatagramPacket。
* 关闭DatagramSocket 。
* 从DatagramPacket中获取数据。
public static void main(String[] args) throws IOException { DatagramSocket socket =new DatagramSocket(8888); DatagramPacket packet= new DatagramPacket(new byte [1024], 1024); socket.receive(packet); //接收数据 byte [] arr=packet.getData(); //获取数据 int len=packet.getLength(); //获取有效的字节个数 System.out.println(new String(arr, 0,len)); String ip=packet.getAddress().getHostAddress(); //获取ip int prot=packet.getPort(); //获取端口号 socket.close(); System.out.println(ip); System.out.println(prot); }
、3,接收方获取ip和端口号:
* String ip=packet.getAddress().getHostAddress();
* int prot=packet.getPort();