网络编程就相当于通过网络进行数据的传输,可以传给别人,不仅限于自己;
BS优点
1.不需要开发客户端,只需要页面+服务器
2.不用下载
缺点
如果应用过大
cs优点
1.画面精美
缺点
1.客户端,服务端都要开发
设备在网络中的地址,是唯一的标识
应用程序在设备中唯一的标识
数据在网络中传输的规则,常见的协议有UDP,TCP
单播
组播
广播
发送信息
-
- //绑定端口,以后就是从这个端口往外发
- //空参:所有可用的端口随机一个进行使用
- //有参:指定端口号进行绑定
- //创建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();
客户端
①创建客户端的Socke对象与指定服务器连接
②获取输入流,写数据
③释放资源
服务器
①创建客户端的Socke对象(SeverSocket)
②监听客户端连接,返回Socket对象
③获取输入流,读数据,并把数据显示在控制台
④释放资源
俩者连接的底层原理
服务端先运行,等待客户端的连接(三次握手协议保证连接的建立)
断开连接的底层原理是四次挥手协议
三次握手:客户端向服务端申请连接,服务端返回一个响应,客户端再次发送确认信息,完成连接(确保连接)
四次挥手:客户端发出取消连接,服务端返回一个响应表示收到,服务端将剩下的数据处理完毕再向客户端发送确认信息,客户端接收并确认,连接断开(确保断开,且数据处理完毕)