网络编程TCP UDP通信基础入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36928687/article/details/84723854
//网络通信的第一个要素:IP地址。通过IP地址,唯一的定位互联网上一台主机

//InetAdress:位于java.net包下
//1.InetAddress用来代表IP地址.一个InetAdress对象就代表一个IP地址
//2.如何获取InetAdress对象:getByName(String host)//host:域名
//    获取本机的IP:getLocalHost();
//3.getHostName():获取IP地址对应的域名
//  getHostAddress(): 获取IP地址

TCP编程:

服务端和客户端的连接:

客户端发送信息到服务端.服务端输出此信息到控制台上

网络编程实际上就是Socket的编程

客户端:

1.创建一个Socket的对象,通过构造器指明服务端的IP地址,以及其接收程序的端口

2.getOutoutStream():发送数据,方法返回一个OutoutStream的对象

3.具体的输出过程

4.关闭相应的流和Socket对象

public void client(){
		try {
			Socket socket=new Socket(InetAddress.getLocalHost(),9999);
			OutputStream os= socket.getOutputStream();
			os.write("我是客户端,haaa".getBytes());
			os.close();
			socket.close();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

服务端:

1.创建一个SeverSocket的对象,通过构造器指明自身的端口号

2.调用其acept()方法,返回一个Socket对象

3.调用Socket对象的getInputStream()获取一个客户端发送过来的一个输入流

4.对获取的流的操作

5.关闭相应的流以及Socket和SeverSocket的对象

public void server(){
		try {
			ServerSocket ss=new ServerSocket(9999);
			Socket s = ss.accept();
			InputStream is = s.getInputStream();
			byte[] b=new byte[20];
			int len;
			while((len=is.read(b))!=-1){
				String str=new String(b,0,len);
				System.out.println(str);
			}
			is.close();
			s.close();
			ss.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

UDP编程:

* 1)不需要建立连接通道
 * 2)数据大小有限制
 * 3)不可靠连接---->传输速度快!


 

 发送端

  *      1)创建发送端的Socket对象
 *        2)创建数据,并打包
 *        3)调用当前发送端Socket对象中的发送的方法
 *        4)关闭资源


 

public void send() {
		try {
			DatagramSocket ds = new DatagramSocket();
			Scanner scan = new Scanner(System.in);
			String str1 = scan.nextLine();
			byte[] b = str1.getBytes();
			// 创建一个数据报:每一个都不能大于64k,都记录着数据信息,发送端的IP、端口号、以及要发送到的接收端的IP和端口号
			DatagramPacket dp = new DatagramPacket(b, 0, b.length, InetAddress.getLocalHost(), 4396);
			ds.send(dp);
			ds.close();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

接收端

*    1)创建Socket对象
 *    2)创建一个数据报包(接收容器)
 *    3)
调用Socket对象中的接收的方法
 *    4)解析实际传递的数据
 *    5)将解析的数据(ip,数据)展示在控制台上
 *    6)关闭资源


 

	public void recive(){
		try {
			DatagramSocket ds = new DatagramSocket(4396);
			byte[] b=new byte[1111];
			DatagramPacket dp=new DatagramPacket(b,0,b.length);
			ds.receive(dp);
			String str=new String(dp.getData(),0,dp.getLength());
			System.out.println(str);
			ds.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

猜你喜欢

转载自blog.csdn.net/qq_36928687/article/details/84723854