zoukankan      html  css  js  c++  java
  • Java基础——网络编程

    网络编程:

     IP地址:InetAddress

      唯一的表示Intenet上的计算机

      本地地址(hostAddress):127.0.0.1  主机名(hostName):localhost

    端口号:正在计算机上运行的程序

    网络套接字:端口号和IP地址的组合

    	@Test
    	public void test(){
    		InetAddress add = InetAddress.getByName("www.baidu.com");
    		System.out.println(add);
    		//获取InetAddress对象所含的域名
    		System.out.println(add.getHostName());
    		//获取InetAddress对象所含的IP地址
    		System.out.println(add.getAddress());
    		
    		//获取本地的域名和IP地址
    		InetAddress add1 = InetAddress.getLocalHost();
    		System.out.println(add1);
    	}
    

      

    TCP协议:
      使用TCP协议前,须先建立TCP连接,形成传输数据通道
      传输前,采用“三次握手”方式,是可靠的
      TCP协议进行通信的两个应用进程:客户端、服务端
      在连接中可进行大数据量的传输
      传输完毕,需释放已建立的连接,效率低
    UDP协议:
      将数据、源、目的封装成数据包,不需要建立连接
      每个数据报的大小限制在64K内
      因无需连接,故是不可靠的
      发送数据结束时无需释放资源,速度快
    Socket
      利用套接字(Socket)开发网络应用程序早已被广泛的采用,以至于成为事实上的标准。
      通信的两端都要有Socket,是两台机器间通信的端点
      网络通信其实就是Socket间的通信。
      Socket允许程序把网络连接当成一个流,数据在两个Socket间通过IO传输。
      一般主动发起通信的应用程序属客户端,等待通信请求的为服务端

    TCP_IP协议的网络编程

    package first;
    
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Scanner;
    
    import org.junit.Test;
    //客户端给服务端发送文本,服务端将文本转成大写返回给客户端
    //为了保证相应的流即socket的关闭,使用try-catch-finally进行操作。将关闭的信息写在finally里
    
    public class TestTCP {
    
    	@Test
    	public void client() {
    		//1.创建Socket(套接字):根据指定服务端的 IP 地址或端口号构造 Socket 类对象。
    		//Socket(String host,int port)、或者Socket(InetAddress address,int port)
    		Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9090);
    		//2.打开连接到socket的输出流
    		OutputStream os = socket.getOutputStream();
    		//3.向服务端发送数据
    		System.out.println("请输入多个字符");
    		Scanner scanner = new Scanner(System.in);
    		String str = scanner.next();
    		os.write(str.getBytes());
    		//shutdownOutput():显式的告诉服务端,发送完毕
    		socket.shutdownOutput();
    		//4.接收来自服务端传回来的数据
    		InputStream is = socket.getInputStream();
    		byte[] b = new byte[10];
    		int len;
    		while((len = is.read(b)) != -1) {
    			String str1 = new String(b, 0, len);
    			System.out.println(str1);
    		}
    		//5.
    		is.close();
    		scanner.close();
    		os.close();
    		socket.close();
    	}
    	
    	@Test
    	public void server() {
    		//1.创建一个ServerSocket对象,创建一个服务器端套接字(Socket),并绑定到指定端口。用于监听客户端请求
    		//服务器端必须事先建立一个等待客户请求建立套接字连接的ServerSocket对象
    		ServerSocket ss = new ServerSocket(9090);
    		//2.调用其accept()方法,返回一个Socket对象,监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字对象
    		Socket s = ss.accept();
    		//3.调用Socket的getInputStream()获取接受来自客户端的发送过来的输入流
    		InputStream is = s.getInputStream();
    		//4.对获取的输入流进行操作
    		byte[] b = new byte[10];
    		int len;
    		String str = null;
    		while((len = is.read(b)) != -1) {
    			String str1 = new String(b, 0, len);
    			str += str1;
    		}
    		String strUpperCase = str.toUpperCase();
    		//5.返回给客户端
    		OutputStream os = s.getOutputStream();
    		os.write(strUpperCase.getBytes());
    		//6.
    		os.close();
    		is.close();
    		s.close();
    		ss.close();
    		
    	}
    }
    

      

    UDP_IP协议的网络编程

    package first;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    import org.junit.Test;
    
    public class TestUDP {
    	@Test
    	public void send() {
    		//1.创建DatagramSocket对象
    		DatagramSocket ds = new DatagramSocket();
    		byte[] b = "你好,我是要发送的数据".getBytes();
    		//创建一个数据报:每个数据报不能大于64K,都记录着数据信息,发送端的IP、端口号,以及要发送到的接收端IP、端口号
    		DatagramPacket pack = new DatagramPacket(b, 0, b.length, 
    				InetAddress.getByName("127.0.0.1"), 9090);
    		ds.send(pack);
    		ds.close();
    	}
    	
    	@Test
    	public void receive() {
    		DatagramSocket ds = new DatagramSocket(9090);
    		byte[] b = new byte[1024];
    		DatagramPacket pack = new DatagramPacket(b, 0, b.length);
    		ds.receive(pack);
    		
    		String str = new String(pack.getData(), 0, pack.getLength());
    		System.out.println(str);
    		
    		ds.close();
    	}
    }
    

      

    UDP网络通信流程:
      1.DatagramSocket与DatagramPacket
      2.建立发送端,接收端
      3.建立数据包
      4.调用Socket的发送、接收方法
      5.关闭Socket
    发送端与接收端是两个独立的运行程序


    URL编程
    URL(Uniform Resource Locator):统一资源定位符,它表示 Internet 上某一资源的地址。
    通过 URL 我们可以访问 Internet 上的各种网络资源,比如最常见的 www,ftp 站点。浏览器通过解析给定的 URL 可以在网络上查找相应的文件或其他资源。

     java.net中的URL类:

      构造器:

      public URL (String spec):通过一个表示URL地址的字符串可以构造一个URL对象。例如:URL url = new URL ("http://www. atguigu.com/");
      public URL(URL context, String spec):通过基 URL 和相对 URL 构造一个 URL 对象。例如:URL downloadUrl = new URL(url, “download.html")
      public URL(String protocol, String host, String file); 例如:new URL("http", "www.atguigu.com", “download. html");
      public URL(String protocol, String host, int port, String file); 例如: URL gamelan = new URL("http", "www.atguigu.com", 80, “download.html");

    一个URL对象生成后,其属性是不能被改变的,但可以通过它给定的方法来获取这些属性
      public String getProtocol( ) 获取该URL的协议名
      public String getHost( ) 获取该URL的主机名
      public String getPort( ) 获取该URL的端口号
      public String getPath( ) 获取该URL的文件路径
      public String getFile( ) 获取该URL的文件名
      public String getRef( ) 获取该URL在文件中的相对位置
      public String getQuery( ) 获取该URL的查询名

  • 相关阅读:
    SQL SERVER导入Excel csv
    微信付款码扫码枪支付
    idftp
    不正常地定义参数对象。提供了不一致或不完整的信息
    sql 日志文件截断收缩
    sql server 新语法 收藏
    SQL SERVER 2019新功能
    SQL SERVER 死锁
    rad 10.2
    TXMLDocument 创建空值节点不要缩写
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/7818580.html
Copyright © 2011-2022 走看看