马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
109.netstat指令
- netstat -an 可以查察当前主机网络情况,包罗端口监听情况和网络毗连情况
- netstat -an|more 可以分页表现
- 要求在dos控制台下实行
阐明:
- LISTENING表现某个端口在监听
- 如果有一个外部步调(客户端)毗连到该端口,就会表现一条毗连信息
- ctrl + c 退出指令
110.TCP毗连秘密
1.当客户端毗连到服务器后,现实上客户端也是通过一个端口的服务端举行通讯的,这个端口是TCP/IP来分配的,不确定的,随机的
3.步调验证
111.UDP网络通讯编程
根本信息
- 类 DatagramSocket和 DatagramPacket[数据报/数据包] 实现了基于UDP 协议网络步调
- UDP数据通过数据报套接字 DatagramSocket 发送和吸收,体系不包管UDP数据报肯定可以或许安全送到目标地,也不能确定什么时间可以抵达
- DatagramPacket 对象封装了UDP数据报,在数据报中包罗了发送端的IP地点和端标语以及吸收端的IP地点和端标语
- UDP协议中每隔数据报都给出了完备的地点信息,因此无需创建发送方和吸收方的毗连
根本流程
- 焦点的两个类/对象 DatagramSocket与DatagramPacket
- 创建发送端,吸收端(没有服务端和客户端概念)
- 发送数据前,创建数据包/报 DatagramPacket对象
- 调用DatagramSocket的发送,吸收方法
- 关闭DatagramSocket
UDP阐明:
- 没有明确的服务端和客户端,演酿成数据的发送端和吸收端
- 吸收数据和发送数据是通过 DatagramSocket 对象完成
- 将数据封装到 DatagramPacket 对象/包装
- 当吸收到 DatagramPacket 对象,须要举行拆包,取出数据
- DatagramSocket 可以指定在哪个端口吸收数据
应用案例:- //1.编写一个接收端A和一个发送端B
- //2.接收端A在9999端口等待接收数据(receive)
- //3.发送端A向接收端B 发送数据“hello,明天吃火锅~”
- //4.接收端B接收到发送端A发送的数据,回复“好的,明天见”再退出
- //5.发送端接收回复的数据,再退出
-
- ===============//ReceiverA//===============
- public class UDPReceiverA {
- public static void main(String[] args) throws Exception {
- //1.创建一个DatagramSocket对象,准备在9999端口接收数据
- DatagramSocket socket = new DatagramSocket(9999);
- //2.构造一个 DatagramPacket对象
- // 一个数据包,最大是64k
- byte[] buf = new byte[64 * 1024];
- DatagramPacket packet = new DatagramPacket(buf, buf.length);
- //3.调用 接受方法,将通过网络传输的 DatagramPacket对象填充到packet对象
- // 当有数据包发送到9999端口时,就会接收到数据,如果没有数据包发送到,就会阻塞等待
- System.out.println("接收端A 等待接收数据..");
- socket.receive(packet);
- //4.可以把packet进行拆包,取出数据,并显示
- int length = packet.getLength();//实际接收到的数据字节长度
- byte[] data = packet.getData();//接收到数据
- String s = new String(data, 0, length);
- System.out.println(s);
-
- //==回复信息给B端
- //将需要发送的数据,封装到DatagramPacket对象
- data = "好的,明天见".getBytes();
- //封装的 DatagramPacket对象 data内容字节数组,data.length,主机(IP),端口
- packet = new DatagramPacket(data, data.length, InetAddress.getLocalHost(),9998);
- socket.send(packet);//发送
- //5.关闭资源
- socket.close();
- }
- }
-
-
-
- ===============//SenderB//===============
- public class UDPSenderB {
- public static void main(String[] args) throws Exception {
- //1.创建 DatagreamSocket 对象,准备在9998端口 接收数据
- DatagramSocket socket = new DatagramSocket(9998);//同一个机器没有两个相同的端口,所以用9998
- //2.将需要发送的数据,封装到DatagramPacket对象
- byte[] data = "hello 明天吃火锅~".getBytes();
- //封装的 DatagramPacket对象 data内容字节数组,data.length,主机(IP),端口
- DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getLocalHost(),9999);
- socket.send(packet);
- //3.==接收从A端回复的信息
- // (1)构造一个 DatagramPacket对象
- // 一个数据包,最大是64k
- byte[] buf = new byte[64 * 1024];
- packet = new DatagramPacket(buf, buf.length);
- // (2)调用 接受方法,将通过网络传输的 DatagramPacket对象填充到packet对象
- // 当有数据包发送到9998端口时,就会接收到数据,如果没有数据包发送到,就会阻塞等待
- socket.receive(packet);
- // (3)可以把packet进行拆包,取出数据,并显示
- int length = packet.getLength();//实际接收到的数据字节长度
- data = packet.getData();//接收到数据
- String s = new String(data, 0, length);
- System.out.println(s);
- //关闭资源
- socket.close();
- System.out.println("B端退出");
- }
- }
复制代码 |