网络编程:在网络通信协议下,不同计算机上运行的程序,进行的数据传输
常见的软件架构
C/S:在用户本地需要下载并安装客户端程序,在远程有一个服务器端程序
B/S:只需要一个浏览器,用户通过不同的网址,客户访问不同的服务器
BS的优缺点
- 不需要开发客户端,只需要页面+服务端
- 用户不需要下载,打开浏览器就能使用
- 如果应用过大,用户体验收到影响
CS的优缺点
- 画面精美,用户体验好
- 需要开发客户端,也需要开发服务端
- 用户需要下载和更新的时候太麻烦
网络编程三要素
IP:设备在网络中的地址,是唯一的标识
端口:应用程序在设备中唯一的标识
协议:数据在网络中传输的规则,常见的协议有UDP,TCP,http,https,ftp
1.常见的IP
IPv4:采用32位地址长度,分为4组,点分十进制表示法,总数有限,目前已经用完

127.0.0.1:本机IP,永远只会寻找当前所在本机
- ipconfig:查看本机IP地址
- ping:检查网络是否连通
InteAddress类:

IPv6:采用128位地址长度,分成8组,冒分十六进制表示法
2.端口号
两个字节表示的整数,取值范围:0~65535,我们自己使用1024以上的端口号就可以了
一个端口号只能被一个应用程序使用
3.协议

- UDP是面向无连接通信协议,速度快,有大小限制一次最多发送64K,数据不安全,容易丢失数据
UDP的三种通信方式:单播,组播,广播
- TCP是面向连接的通信协议,速度慢,没有大小限制,数据安全
UDP通信程序
1.发送数据
创建DatagramSocket对象
绑定端口:以后我们就是通过这个端口往外发送
空参:所有可用的端口随机一个进行使用
有参:指定端口号进行绑定
打包数据
释放资源
java
public static void main(String[] args) throws IOException {
DatagramSocket ds=new DatagramSocket();
String str="hello";
byte[] buf=str.getBytes();
InetAddress address=InetAddress.getByName("127.0.0.1");
int port=10086;
DatagramPacket dp=new DatagramPacket(buf, buf.length, address, port);
ds.send(dp);
ds.close();
}
2.接受数据
创建DatagramSocket对象
在接受的时候一定要绑定端口,一定要和发送的端口保持一致
接受数据包
解析数据包
释放资源
java
public static void main(String[] args) throws IOException {
DatagramSocket ds=new DatagramSocket(10086);
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);
byte[] msg=dp.getData();
int len=dp.getLength();
InetAddress ip=dp.getAddress();
int port=dp.getPort();
System.out.println("接受到数据"+new String(msg,0,len));
System.out.println("该数据是从"+ip+port+"这个端口发出的");
ds.close();
}