Java高级(六)Java网络编程

Java高级(六)Java网络编程

1.理解网络相关概念

1.有那些大的局域网?(fq)
万维网 因特网
内网 局域网
网络可以传输资料 共享资料 交流通信

IP(Internet protocol)地址(计算机的身份证号,临时唯一的)
交换机
网站:IP静态的, 唯一的

IPV4
IPV6

Dos命令 :ipconfig,查看windows系统的IP地址
Linux: ifconfig,查看Linux系统的IP地址
测试网络连通:ping(死亡之ping)

公网的端口号:80

2.我们知道可以通过Ip地址:端口号的方式访问某个计算机上某个程序 那么我们为什么平时访问网站(程序)的时候没有输入ip地址
www.baidu.com 域名解析系统,通过DNS域名解析系统 映射到计算机的Ip地址,NDS 域名解析系统

com 商业网站
cn 中国的网站
org 非盈利组织
gov 政府机构
edu 教育机构
3.访问百度的时候:
百度 域名/百度ip:端口号

运行这个百度程序的计算机就是服务器

服务器:给用户提供服务的机器

网络服务器: 配置需要足够高! 就是一个高配置 专门运行企业软件相关的计算机。

4.使用基于TCP协议的Socket(套接字)编程

TCP 三次握手

第一次

第一次握手:建立连接时,客户端包到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态

第三次

第三次握手:[客户端]收到[服务器的SYN+ACK包,向[服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据

5.使用基于UDP协议的Socket编程

Java网络编程
网络概述:相互连接的计算机
IP地址: 计算机在网络中地址的表示 网络地址+主机地址32位,由4个8位二进制数组成,二进制不好记(0-1),转化为十进制(0-9)
网络地址:标识计算机或网络设备所在的网段
主机地址:标识特定主机或网络设备 192.168.1.225 网络地址 主机地址
A类IP地址:第一个数为1-126 前8位 后24位
B类IP地址:第一个数为128-191 前16位 后16位
C类IP地址:第一个数为192-223 前24位 后8位
D类IP地址:第一个数为224-239 用于组播通信
E类IP地址:第一个数为240-225 用于科研
0.0.0.0 表示本机
127.0.0.1 表示本机回环地址,通常用在本机上ping此地址来检查TCP/IP协议安装是否正确
255.255.255.255:表示当前子网,一般用于向当前子网广播信息
网络的分类:局域网 城域网 广域网

协议:为了在网络中不同计算机之间进行通信而建立的规则,标准或约定的集合

网络分层模型:

ISO参考模型作用TCP/IP模型(TCP传输控制协议IP网络互连协议)
物理层建立,维护,断开物理连接物理层 由底层网络定义协议
数据链路层建立逻辑连接,进行硬件地址寻址,差错效验等功能网络接口层
网络层进行逻辑地址寻址,实现不同网络之间的路径选择互联网层 ICMP IGMP IP ARP RSRP
传输层定义传输数据的协议端口号,流量控制和差错恢复传输层 TCP UDP
会话层建立,管理和终止会话
表示层数据的表示,安全,和压缩
应用层网络服务和最终用户的接口应用层 HTTP FTP TFTP SMTP

ipconfig 查看本机的ip地址
ping 测试网络是否通畅
网络服务器:具有较高计算能力的计算机
1.邮件服务器:负责电子邮件收发管理的设备

2.web服务器:程序 Apache Tomcat http:\协议 开源 轻巧 免费
B/S 浏览器访问,隐形升级 更注重于B/S开发
C/S QQ下载安装客户端 , 更新安装包

Socket简介(插孔插座)
什么是Socket?(套接字)
提供给应用程序的接口
Socket分类 java.net
流式套接字(SOCK_STREAM) 【数据安全 TCP】

面向连接、可靠的数据传输服务

数据报式套接字(SOCK_DGRAM) 【高效,数据不安全 UDP】
无连接服务,需要(IP,端口号) 请求 (方法监听请求)
A--------------------->---------------B

输入流输出流
Socket,ServerSocket accept();监听方法
服务器端:创建ServerSocket对象客户端:Socket() 发送IP地址,端口输出流
accept()方法监听电话 输入流

服务器:

		while(true){      //服务器一直处于监听状态
		SocketServer socketserver=new SocketServer(5000); //端口号,服务器搜索客户端的Socket对象
		Socket socket=socketserver.accept();  //接收客户端的Socket对象
		MyThread  thread=new MyThread(socket);//使用线程的构造方法将客户端传过来的Socket对象返回
		thread.start();//启动线程
		}
		
	/*线程:(用继承Thread类的方式来写线程)*/
public class MyThread extends Thread{
	   private  Socket  socket;//定义一个空线程
	   public  MyThread(Socket socket){//带有参数的构造方法,参数是一个线程
       this.socket=socket;
		 }
	public void run(){ //run方法,启动线程是,就调用了run()方法
	     输入流
	InputStream    is=socket.getInputStream();
	BufferedReader br=new BufferedReader(new InputStreamReader(is));
	String info;
	while((info=br.readLine())!=null){
	   System.out.print(info);
	  }
	  //获取客户端的ip地址
	  InetAddress ia=socket.getInetAddress();
      String ip=ia.getHostAddress;
	  System.out.print(ip);
	  
	 String str="登录成功";
	 //输出流
	 OutputStream  os=socket.getOutputStream();
	 os.write(str.getBytes());
	 os.flush();
	 }
	} 		

客户端:

 Socket socket=new Socket("服务器Ip地址",端口号);
	OutputStream os=socket.getOutputStream();
	os.write(str);
	socket.shutdownOutput();
	InputStream is=socket.getInputStream();
	BufferedReader br=new BufferedReader(new InputStreamReader(is));
	String info;
	while((info=br.readLine())!=null){
	   System.out.print(info);
	  }

多个客户端与服务器进行交互
服务器:一直监听客户请求,
一旦听到客户请求,立刻创建一个线程,开启线程
线程:(用继承Thread类的方式来写线程)
接收客户的请求,并给客户一个响应
客户端:发送请求到服务器
接收服务器的响应

如何获得客户端IP地址

InetAddress ia=socket.getInetAddress();
String  ip=ia.getHostAddress();     

基于UDP协议的Socket编程

服务端与客户端的通信TCPUDP
是否连接面向连接面向非连接
传输可靠性可靠不可靠
速度

DatagramSocket
DatagramPacket
礼物 --数据(字符串)
包裹 --DatagramPacket
快递点–DatagramSocket

寄礼物 --send()
收礼物 --receive()
获取IP地址的方式

InetAddress ia=InetAddress.getByName("localhost");
//DatagramPacket(字符串数组,字符串数组长度,IP地址,端口)的构造方法四个参数
DatagramSocket socket=new DatagramSocket();
socket.send(/*DatagramPacket类型的参数*/);
socket.receive(/*DatagramPacket类型的参数*/);
String str=new String (/*数组,开始位置,数组长度*/);

简述域名解析原理
在浏览器中输入域名www.taobao.com,主机在向www.taobao.com发出请求之前要先知道他的IP地址。主机会调用域名解析程序,向设定的DNS服务器发送信息,请求获得www.taobao.com的IP地址,如果本地DNS没有储存相应的信息,他会发送信息到跟DNS服务器获得.comDNS服务器的IP,然后向.comDNS服务器发送查询请求获得taobao.comDNS服务器的IP地址,最终获得www.taobao.com的IP地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值