Java第二十五天学习笔记~(网络编程)

一、网络编程概述:

1、实现网络之间的通信,要具备三个要素,IP地址,端口,和通讯协议

IP地址:它是为主机编地址的方式.IP地址是32位的二进制数。它被分隔成4部分,每部分八个二进制位,中间用,隔开,因此每段最大为255。常见的IP地址有IPV4和IPV6.。IPV4为32位,分4段,每段最大值为255,但是随着互联网的发展,IP地址需求过大,因此产生了IPV6它是采用128位的地址长度。解决了IP地址不够用的问题

2、逻辑端口:用于标志进程的逻辑地址,不同的进程的标识,有效端口范围0-65535 ,其中0-1024一般用于系统或作为保留端口

3、同时我们也必须拥有一样的协议,国际组织定义了TCP/IP协议,这个协议大部分操作系统都具备,因此我们可以实现跟所有觉又此协议的计算机实现通信。常见的协议有TCP ,UDP

本地回环地址:127.0.0.1  主机名:localhost,可用于测试网卡   (ping 127.0.0.1)

二、 OSI七层和TCP/IP四层的关系

2.1 OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型

2.2 OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型

2.3 OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准

TCP:transmission control protocol 传输控制协议

UDP:user data protocol 用户数据报协议

网络模型

UDP:

1、将数据源和目的封装成数据包中,不需要建立连接

2、每个数据报的大小限制在64K内

3、因无连接,是不可靠协议

4、不需要建立连接,速度快

TCP:

1、建立连接,形成传输数据的通道

2、在连接中进行大量数据传输

3、通过三次握手确认连接,是可靠协议

4、必须建立连接,效率会稍低

屏蔽垃圾网站: 127.0.0.1 先访问本地的原理

UDP

Socket:

1、Socket就是为网络服务提供的一种机制

2、通信的两端都有Socket

3、网络通信其实就是Socket间的通信

4、数据在两个Socket间通过IO传输

UDP发送端:

需求:通过DUP传输方式,将一段文字数据发送出去

定义一个UDP的发送端

思路:

1、建立udpsocket服务

2、提供数据,并将数据封装到数据包中

3、通过socket服务的发送功能,将数据包发出去

4、关闭资源

package cn.itcast.net.p2.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UDPSendDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		System.out.println("发送端启动");
	/*1、建立UDP的socket服务
	 *2、将要发送的数据封装到数据包中
	 *3.通过udp的socket服务将数据包发送出去
	 *4.关闭socket服务
	 
	 * */
		//*1、建立UDP的socket服务
		DatagramSocket ds=new DatagramSocket();
		
		// *2、将要发送的数据封装到数据包中
		String str="UOS传输演示:哥们来了!";
				//使用DatagramPacket将数据封装到该对象包中
		byte[] buf=str.getBytes();
		
		DatagramPacket dp=new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.100"),10000);
		
		//*3.通过udp的socket服务将数据包发送出去
		ds.send(dp);		
		// *4.关闭socket服务
		
	
	ds.close();
		 
		
	}

}

UDP接收端:

需求:定义一个应用程序,用于接受udp协议传输的数据并处理

思路:

1、定义udpsocket服务。通常会监听一个端口,其实就是给这个接收网络应用程序定义数字标识,

方便明确哪些数据过来,此应用程序可以处理

2、定义一个数据包,因为要存储接受到的字节数据,数据包对象中有更多功能,可以提取字节数据中的不同数据信息

3、通过socket服务的receive方法将收到的数据存入已定义好的数据包中

4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上

5、关闭资源

package cn.itcast.net.p2.udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UDOReceDemo {

	public static void main(String[] args) throws IOException  {
		// TODO Auto-generated method stub
		System.out.println("接收端启动");
		/*
		 * 建立UDP接收端的思路
		 * 1,建立udp socket服务
		 * 2,创建数据包,用于存储接收到的数据。方便用数据包的对象方法解析这些数据
		 * 3,使用socket服务的recrive方法将接收的数据存储到数据包中
		 * 4,通过数据包的方法解析数据包中的数据
		 * 5,关闭资源
		 */
		 //1,建立udp socket服务
		DatagramSocket ds=new DatagramSocket();
		 //2,创建数据包,用于存储接收到的数据。方便用数据包的对象方法解析这些数据
		byte[] buf=new byte[1024];
		DatagramPacket dp=new DatagramPacket(buf,buf.length);
		 //3,使用socket服务的recrive方法将接收的数据存储到数据包中
		ds.receive(dp);
		 //4,通过数据包的方法解析数据包中的数据
		String ip=dp.getAddress().getHostAddress();
		int port=dp.getPort();
		String text=new String(dp.getData(),0,dp.getLength());
		
		System.out.println(ip+"+port+"+text);
		
		 //5,关闭资源
		ds.close();
	}

}


 

猜你喜欢

转载自blog.csdn.net/crazyhulu/article/details/85756592