网络编程就相当于通过网络进行数据的传输,可以传给别人,不仅限于自己;
常见软件架构
BS优点
1.不需要开发客户端,只需要页面+服务器
2.不用下载
缺点
如果应用过大
cs优点
1.画面精美
缺点
1.客户端,服务端都要开发
三要素:
IP
设备在网络中的地址,是唯一的标识
端口号
应用程序在设备中唯一的标识
协议
数据在网络中传输的规则,常见的协议有UDP,TCP
UDP协议
- 用户数据报协议
- UDP是面向无连接通信协议。速度快,有大小限制(64K),数据不安全,易丢失数据
单播
组播
广播
发送信息
//绑定端口,以后就是从这个端口往外发//空参:所有可用的端口随机一个进行使用//有参:指定端口号进行绑定//创建DatagramSocket对象DatagramSocket ds = new DatagramSocket();//单播,广播//MulticastSocket ms = new MulticastSocket();//组播//打包数据String str = "我超牛";byte[]bytes = str.getBytes();InetAddress address = InetAddress.getByName("127.0.0.1");int port = 10086;//DatagramPacket(传输的信息,传输的信息的长度,ip,端口号);DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);//发送数据ds.send(dp);ds.close();
接收信息
//创建对象//在接收的时候一定要绑定端口//绑定的端口一定要与发送的端口保持一致DatagramSocket ds = new DatagramSocket(10086);//组播接收数据// InetAddress address = InetAddress.getByName("224.0.0.1");//ms.joinGroup(address);//接收数据包byte[]bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes,bytes.length);ds.receive(dp);//解析数据包byte[]data = dp.getData();int len = dp.getLength();InetAddress address = dp.getAddress();int port = dp.getPort();System.out.println(new String(data,0,len));ds.close();
TCP协议
- 传输控制协议
- TCP是面向连接的通信协议
- 速度慢,没有大小限制,数据安全
客户端
①创建客户端的Socke对象与指定服务器连接
②获取输入流,写数据
③释放资源
服务器
①创建客户端的Socke对象(SeverSocket)
②监听客户端连接,返回Socket对象
③获取输入流,读数据,并把数据显示在控制台
④释放资源
俩者连接的底层原理
服务端先运行,等待客户端的连接(三次握手协议保证连接的建立)
断开连接的底层原理是四次挥手协议
三次握手:客户端向服务端申请连接,服务端返回一个响应,客户端再次发送确认信息,完成连接(确保连接)
四次挥手:客户端发出取消连接,服务端返回一个响应表示收到,服务端将剩下的数据处理完毕再向客户端发送确认信息,客户端接收并确认,连接断开(确保断开,且数据处理完毕)