最后更新:2022-08-02 23:57:55 手机定位技术交流文章
网络编程入门
网络编程的三个要素:IP地址、端口、协议(UDP协议、TCP协议)
IP地址:是网络设备的唯一标识符
IP地址分为两个类别:IPV4和IPV6
ipconfig:查看主机IP地址
PingIP地址:检查网络是否连接
是一个返回地址,它可以代表主机地址,通常用于测试
1,InetAddress类
InetAddress:代表互联网协议(IP)地址,有三个常见的方法:
静态InetAddress getByName(String host):确定主机名称的IP地址,主机名称可以是机器名称,也可以是IP地址
getHostName():获取此IP地址的主机名称
getHostAddress():返回在文本中显示的IP地址字符串
public class InetAddressDemo1 {
public static void main(String[] args) throws UnknownHostException{
//获取主机的主机名称对象,两者都可用,并建议直接使用IP地址
InetAddress address = InetAddress.getByName("XTZ-20191115MAD");
InetAddress address1 = InetAddress.getByName("192.168.56.1");
//获取主机名称
String Name = address.getHostName();
//获取主机IP地址
String ip = address.getHostAddress();
System.out.println("hostname:"+Name);
System.out.println("IP地址:"+ip);
}
}
2、端口、协议
端口号:取值范围0~65535 其中 0~1023中间的值不能取,有特殊意义,只能取1024以上的端口号
UDP协议:是一种不连接的通信协议,不能保证数据完整性。当重要的数据被传输时,不建议使用UDP协议
TCP协议:是一种面向连接的通信协议,提供可靠、无误的数据传输,每连接有三个握手
第一次握手:客户端向服务器发送连接请求并等待服务器确认
第二次握手:服务器返回给客户端的响应,通知客户端已收到连接请求
第三次握手:客户端再次向服务器发送确认消息,确认连接
3、UDP通信程序
发送UDP数据的步骤:
1.为发送端创建一个接口对象(DatagramSocket)。
2.创建数据并包装数据
如何通过调用DatagramSocket对象发送数据
4、关闭发送端
//UDP发送数据
public class UDPSendDemo1 {
public static void main(String[] args) throws IOException {
//1.为发送端创建一个接口对象(DatagramSocket)。
DatagramSocket ds = new DatagramSocket();
//2.创建数据并包装数据
byte[] bys = "hello world".getBytes();
/*int length = bys.length;
InetAddress address = InetAddress.getByName("192.168.56.1");
int port = 10086;*/
//优化上面的代码
//DatagramPacket dp = new DatagramPacket(bys,length,address,port);
DatagramPacket dp = new DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.56.1"),10086);
//如何通过调用DatagramSocket对象发送数据
ds.send(dp);
ds.close();
}
}
4、UDP接收数据
1.创建接收端口对象(DtagramSocket)
2.为接收数据创建数据包
调用数据gramSocket对象来接收数据的方法
分析数据包并显示数据在控制面板上
5、关闭接收端
//UDP接收数据
public class UDPReceiveDemo2 {
public static void main(String[] args) throws IOException {
//1.创建接收端口对象(DtagramSocket)
DatagramSocket ds = new DatagramSocket(10086);
//2.为接收数据创建数据包
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys,bys.length);
//调用数据gramSocket对象来接收数据的方法
ds.receive(dp);
//分析数据包并显示数据在控制面板上
/* byte[] datas = dp.getData();// 此方法获取数据缓冲区
Int len = dp.getLength();//返回发送的数据长度或实际接收的数据长度
String dataString = new String(datas,0,len);
System.out.println("data is:"+dataString);*/
//优化上面的代码
System.out.println("data is:"+new String(dp.GetData(),0,dp.getLength());
//5、关闭接收端
ds.close();
}
}
UDP通讯程序实践
/*UDP案例实践:
UDP发送数据:数据来自键盘记录,直到输入数据886,发送数据结束
UDP接收数据:因为接收器不知道发送器什么时候停止发送,它采用死循环接收
* */
//UDP发送数据
public class UDPSend {
public static void main(String[] args) throws IOException {
//1.为发送端创建一个接口对象(DatagramSocket)。
DatagramSocket ds = new DatagramSocket();
//自封装的键盘记录数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while((line = br.readLine())!=null){
//输入数据为886,发送数据结束
if("886".equals(line)){
break;
}
//创建数据并包装数据
byte[] bys = line.getBytes();
DatagramPacket dp = new DatagramPacket(bys,bys.length, InetAddress.getByName("192.168.56.1"),12345);
//如何通过调用DatagramSocket对象发送数据
ds.send(dp);
}
//关闭发送端
ds.close();
}
}
//UDP接收数据
public class UDPReceive {
public static void main(String[] args) throws IOException {
//创建接收端口对象(DtagramSocket)
DatagramSocket ds = new DatagramSocket(12345);
//因为你不知道发射器会发送多少数据,所以这是一个死循环,接收器没有关闭
while(true) {
//为接收数据创建数据包
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
//如何调用DatagramSocket对象接收数据
ds.receive(dp);
//分析数据包并显示数据在控制面板上
System.out.println("data is:" + new String(dp.GetData(), 0, dp.getLength());
}
}
}
本文由 在线网速测试 整理编辑,转载请注明出处。