1. 网络编程
- 概念:同一个网络中多台设备进行数据交换
2. 网络编程三要素
- ip地址: ipconfig 获取本机IP地址 网络是否通: ping 192.168.1.24 127.0.0.1 代表本机地址
- 端口号:0-65535 0-1023系统保留 1024-65535我们来使用
- 通信协议:
- UDP:用户数据包协议 特点:速度快 无连接 不发保证数据完整
- TCP:传输控制协议 特点:有连接(三次握手)保证数据完整性 相对速度慢些
3. InterAddress获取本机IP地址
//public static InetAddress getByName(String host):确定主机名称的IP地址。主机名称可以是 机器名称,也可以是IP地址
InetAddress address = InetAddress.getByName("DESKTOP-L1B80UO");
//InetAddress address = InetAddress.getLocalHost();
//public String getHostName():获取此IP地址的主机名
String name = address.getHostName();
//public String getHostAddress():返回文本显示中的IP地址字符串
String ip = address.getHostAddress();
System.out.println("主机名:" + name);
System.out.println("IP地址:" + ip);
1. udp通信
- 发送数据
//创建发送端的Socket对象(DatagramSocket)
// DatagramSocket() 构造数据报套接字并将其绑定到本地主机上的任何可用端口
DatagramSocket ds = new DatagramSocket();
//创建数据,并把数据打包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//构造一个数据包,发送长度为 length的数据包到指定主机上的指定端口号。
byte[] bys = "hello,udp,我来了".getBytes();
// int length = bys.length;
// InetAddress address = InetAddress.getByName("192.168.1.66");
// int port = 10086;
// DatagramPacket dp = new DatagramPacket(bys,length,address,port);
DatagramPacket dp = new DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.1.104"),10086);
//调用DatagramSocket对象的方法发送数据
//void send(DatagramPacket p) 从此套接字发送数据报包
ds.send(dp);
//关闭发送端
//void close() 关闭此数据报套接字
ds.close();
- 接受数据
//创建接收端的Socket对象(DatagramSocket)
//DatagramSocket(int port) 构造数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocket ds = new DatagramSocket(10086);
//创建一个数据包,用于接收数据
//DatagramPacket(byte[] buf, int length) 构造一个 DatagramPacket用于接收长度为 length数据包
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys,bys.length);
//调用DatagramSocket对象的方法接收数据
System.out.println("启动啦");
ds.receive(dp);
System.out.println("1111");
//解析数据包,并把数据在控制台显示
//byte[] getData() 返回数据缓冲区
// byte[] datas = dp.getData();
//int getLength() 返回要发送的数据的长度或接收到的数据的长度
// int len = dp.getLength();
// String dataString = new String(datas,0,len);
// System.out.println("数据是:" + dataString);
System.out.println("数据是:" + new String(dp.getData(),0,dp.getLength()));
//关闭接收端
ds.close();
|
|