-------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.使用InetAdress
Java提供了InetAdress工具类来操作IP地址。
获取InetAdress实例对应的IP地址和主机名:
1.String getCanonicalHostName;获取此IP地址的全限定域名。
2.String getHostAddress():返回该InetAdress实例对应的IP地址字符串。
3.String getHostName():获取此IP地址的主机名。
4.boolean isReachable():用于测试是否可到达该地址。
public static void main(String[] args) throws Exception{
//根据主机名称来获取向对应的InetAddress
InetAddress ip=InetAddress.getByName("www.itheima.com");
System.out.println(ip);
//打印结果www.itheima.com/42.121.41.246
boolean reachable=ip.isReachable(10000);
//获取本机IP地址
System.out.println("本机IP:"+ InetAddress.getLocalHost());
}
2.UDP网络编程的操作
UDP网络传输特点:
1.将数据及源和目的封装成数据包中,不需要建立连接
2.每个数据包的大小限制在64K内
3.因无连接,是不可靠协议
4.不需要建立连接,速度快
服务端代码:
public static void main(String[] args) throws Exception{
//建立Socket发送端
DatagramSocket ds = new DatagramSocket();
//发送数据
String s = "udpSend发送的消息";
byte[] byt = s.getBytes();
//获取数组长度
int length = byt.length;
//获取计算机名(测试使用本机IP)
InetAddress Ip = InetAddress.getLocalHost();
int port = 6666;
DatagramPacket dp = new DatagramPacket(byt, length,Ip,port);
//调用Socket的发送方法,发送数据包
ds.send(dp);
//关闭socaket
ds.close();
}
客户端代码:
public static void main(String[] args) throws IOException {
// 建立客户端socket对象
// 客户端端口必须和服务器端口一致
DatagramSocket ds = new DatagramSocket(6666);
byte[] byt = new byte[1024];
DatagramPacket dp = new DatagramPacket(byt, byt.length);
// 调用Socket的接收
ds.receive(dp);
// 获取地址对象
InetAddress id = dp.getAddress();
// 获取地址ip
String locahost = id.getHostAddress();
// 获取值
byte[] data = dp.getData();
// 获取长度
int length = dp.getLength();
String rce = new String(data, 0, length);
System.out.println("从" + locahost + "接收到的数据是:" + rce);
// 关闭socaket
ds.close();
}
打印结果从10.198.1.13接收到的数据是:udpSend发送的消息
3.TCP网络编程操作
TCP传输的特点:
1.建立连接,形成传输数据的通道
2.在连接中进行大数据量传输
3.通过三次握手完成连接,是可靠协议
4.必须建立连接,效率会稍低
TCP服务端
public static void main(String[] args) throws IOException{
//创建socket对象
Socket socket=new Socket(InetAddress.getLocalHost(), 8000);
//socket与字节流相关联
OutputStream ops=socket.getOutputStream();
String str="tcpSend我是数据";
//将字符串装换成数组
byte[] byt=str.getBytes();
//输出数据
ops.write(byt);
//关闭socket
socket.close();
//关闭流
ops.close();
}
TCP客户端
ServerSocket server=new ServerSocket(8000);
Socket socket=server.accept();
InputStream ips=socket.getInputStream();
int len=0;
byte[]byt=new byte[1024];
while((len=ips.read())!=-1){
System.out.println(new String(byt,0,len));
}
//关闭socket
socket.close();
//关闭流
ips.close();