java网络编程的基本知识

URL

URL(universal Resource Locator)用于:定位一个软件之间的某个资源
url的组成包含:

  • 协议:
  • 存放资源的主机域名
  • 端口名;默认80
  • 资源文件名

URI可以分为URL和URN
URL:包含资源,也包含了资源访问的方式
URN:没有包含访问资源的方式。

例如:
https://www.baidu.com:80/index.html?uname=lsy&age=18#a

  • https:安全协议,一般都会加s。
  • www.baidu.com:域名
  • 80:端口名
  • uname=shsxt&age=18:参数
  • #a:锚点。

锚点(#)是在同一个页面或者同一个网站之间的跳转
超链接:可以在同一个网站或者不同的网站之间进行跳转

用到的类是:URL类

public class TestURL {
public static void main(String[] args) throws MalformedURLException {
	URL url=new URL("https://www.baidu.com:80/index.html?uname=lsy&age=18#a");
	//获取四个值:用的是正则表达式,不会去判断这个url是否存在。
	System.out.println("协议:"+url.getProtocol());
	System.out.println("域名:"+url.getHost());
	System.out.println("端口"+url.getPort());
	System.out.println("请求资源1"+url.getFile());//具体的请求资源文件
	System.out.println("请求资源2"+url.getPath());//uri,不带参数和锚点
	
	//参数
	System.out.println("参数"+url.getQuery());
	//锚点
	System.out.println("锚点:"+url.getRef());
}
}

IP

IP:作用是定位一个节点:计算机,路由,通讯
用到的是 InetAddress类:获得ip地址,以及一些相关的信息。

主要静态方法:

  • 1.getLocalHost():获得本机的ip地址
  • 2.getByName(“www.shsxt.com”):根据域名解析ip地址

两个成员方法:

  • 1.getHostAddress()返回本机的ip地址
  • 2.getHostName()本机的名称
public class TestIP {

	public static void main(String[] args) throws UnknownHostException {
		// TODO Auto-generated method stub
		//InetAddress.getLocalHost()方法创建InetAddress对象。
		InetAddress addr=InetAddress.getLocalHost();
		System.out.println(addr.getHostAddress());//返回本机的ip地址192.168.145.1
		System.out.println(addr.getHostName());//输出计算机的名称LAPTOP-OG1N7VQG
		
		
		//根据域名得到InetAddress对象,IP
		addr=InetAddress.getByName("www.shsxt.com");
		System.out.println(addr.getHostAddress());
		System.out.println(addr.getHostName());
		
	}

}

端口

端口是区分不同的软件,

  • 用2个字节表示, 在同一个协议中不能出现端口名冲突,不用的协议中可以出现相同的端口名。
    tcp:0-65535
    udp:0-65535

一些常见服务器的端口:
tomcat服务器的端口:8080
Oracle:1521
MySQL:3306
我们在定义端口号的时候尽量定义大一点的端口号,避免冲突
查询操作::在命令行查询本机信息

  • 查看所有的端口:netstat -ano
  • 查看指定的端口:netstat -ano|findstr “808”:可以得到具体的进程
  • 查看指定进程:tasklist|findstr “1564”:可以看到具体的程序
  • 查看具体的进程:使用任务管理器查看pid。

用到的是InetSocketAddress类
构造方法:

  • InetSocketAddress(域名或者是ip地址,端口名);
    常用的方法:
  • getHostName()
  • getAddress()
  • getPort()
public class TestPort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//放入ip地址,或者是域名
		InetSocketAddress  socketAddress1=new InetSocketAddress("127.0.0.1",8080);
		InetSocketAddress  socketAddress2=new InetSocketAddress("localhost",9000);
		System.out.println(socketAddress1.getHostName());
		System.out.println(socketAddress2.getAddress());
		System.out.println(socketAddress2.getPort());
	}

}

传输层的协议TCP,IP传输层的协议:

  • TCP:面向连接的可靠的基于字节流的运输层(三次握手)
  • UDP:一种无连接的传输协议,面向事物的简单的不可靠的传输服务,可能会丢失数据
    应用层的协议:
  • 套接字:Socket,套接字就像是传输层为应用层开了一个小口,应用程序通过这个小口向远程发送数据,或者接受远程发来的数据, 而这个小口以内,也就是数据进入这个小口之后,或者数据从这个小口出来之前,是不知道也不需要知道的,也不会关心 他是如何传输的,这属于网络其他层次的工作。

基于TCP协议的Socket编程:

  • 通讯双方需要建立连接,并且连接的建立时双方存在主次之分

基于UDp协议的Socket编程:

  • 通讯双方不需要建立连接,通讯双方完全平等(连天软件)

你可能感兴趣的:(java学习)