o2o手机网站建设技术,怎么做域名网站,wordpress 免费主题,电脑怎么用别人的网站吗109.netstat指令 netstat -an 可以查看当前主机网络情况#xff0c;包括端口监听情况和网络连接情况 netstat -an|more 可以分页显示 要求在dos控制台下执行
说明#xff1a; LISTENING表示某个端口在监听 如果有一个外部程序#xff08;客户端#xff09;连接到该端口…109.netstat指令 netstat -an 可以查看当前主机网络情况包括端口监听情况和网络连接情况 netstat -an|more 可以分页显示 要求在dos控制台下执行
说明 LISTENING表示某个端口在监听 如果有一个外部程序客户端连接到该端口就会显示一条连接信息 ctrl c 退出指令
110.TCP连接秘密
1.当客户端连接到服务器后实际上客户端也是通过一个端口的服务端进行通讯的这个端口是TCP/IP来分配的不确定的随机的
2.示意图
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对象// 一个数据包最大是64kbyte[] 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对象// 一个数据包最大是64kbyte[] 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端退出);}
}