Java网络学习和笔记——黑马训练营

-------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();





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值