一、网络编程三要素:
1、IP
2、端口:在计算机上,可同时有多个程序接受网络数据,每个程序都至少占用一个端口
3、协议:双方都要使用同一种协议
二、IP:IP地址是计算机在互联网上,唯一标示此计算机的地址
IP地址的组成:网络号码 + 主机地址
A类:第一段为网络号,后三段为本地计算机主机号 1.0.0.1---127.255.255.254
B类:前两段为网络号,后两段为本地计算机主机号 128.0.0.1---191.255.255.254
C类:前三段为网络号,最后一段为本地主机号码 192.0.0.1---223.255.255.254
D类: 224.0.0.1---239.255.255.254
E类: 240.0.0.1---247.255.255.254
子网掩码:全部为1的是子网掩码,子网掩码相同的主机可以相互访问
特殊地址:127.0.0.1 回环地址,可用于测试本机的网络是否有问题。
DOS命令:ping命令:测试网络
ipconfig:查看本机IP地址
三、端口
1、物理端口:网卡口
2、逻辑端口:由操作系统定义并维护。Windows 下,逻辑端口的范围为0---65535
3、每个网络应用程序都至少占用一个逻辑端口,也可以同时占用多个;
4、每个端口同一时刻只能被一个应用程序占用
4、有效端口:0---65535,其中0---1024系统使用或者保留端口
四、协议
1、网络传输协议:UDP、TCP、HTTP、FTP....
2、网络编程涉及到的协议:TCP。UDP
3、UDP:
3/1 先将数据打包
3/2 不需要连接,可以没有接收方,发送方直接发送即可
3/3 由于不需要连接,不安全,速度快
类似于:广播。电视
3/4 发送的数据大小有限制,限制在64K
4、TCP:
4/1 面向 连接的,必须要有接受方
4/2 安全,速度慢(连接是需要双方发送握手信息)
类似于:打电话
五、InetAddress类
1、主要功能
InetAddress getByName(String hostName):获取任意主机
getHostName():获取主机名
getHostAddress():获取主机IP地址
例:
InetAddress add = InetAddress.getByName("Jaff");
六、UDP的发送方
1、实例化一个Socket:DatagramSocket
2、准备数据:
2/1 目标IP
2/2 目标端口
2/3 信息内容
3、封装数据报:DatagramPacket
4、调用DatagramSocket的send()方法,发送数据报
例:
DatagramSocket sendSocket = new DatagramSocket();
InetAddress ip = InetAddress.getByName("Jaff-pc");
int port = 8888;
byte[] byteArray = "hello";
Datagrampaccket packet = newDatagramPacket(byteArray,byteArray.length,ip,port);
sendSocket.send(packet);
sendSocket.close();
七、UDP的接受方
1、建立Socket对象:DatagramSocket(监听端口)
2、建立一个空的byte[]数组,准备接受数据
3、使用byte[]数组建立一个空的DatagramPacket对象,用于获取连接
4、调用DatagramSocket的receive()等待信息
5、一旦有信息回来,receice()将会返回,并将信息填充到对象中
6、通过数据报对象获取信息
例:
DatagramSocket socket = new Datagramsocket(8888);
byte[] byteArrar = new Byte[1024]
DatagramPacket packet = newDatagramPacket(byteArray,byteArray.kength)
socket.receive(packet);
String ip = packet.getAddress().getHostAddress();
byte[] infoArray = packet.getData();
String str = new String(infoArray,packet.getLength());
socket.close();
八、TCP发送方
1、面向连接的,一定要有接收方存在
2、步骤;
2/1 实例化一个Socket:java.net.Socket
构造方法:Socket(String host,int port)
2/2 因为要发送,通过Socket对象获取一个输出流
2/3 通过输出流输出信息
2/4 释放资源
九、TCP的接受方
1、实例化Socket:ServerSocket(监听端口)
2、调用ServerSocket的accept()方法等待客户端连接
3、一旦有客户端连接,accept()方法会返回一个Socket对象,此Socket对象跟发送端的Socket对象是对应的
4、由于要接受数据,从此Socket中获取一个输入流
5、读取数据
6、释放资源