网络编程
一、网络编程
(1)网络编程:Java作为一种互联网编程语言,其提供了网络类库,可以实现无痛的网络连接,网络连接的底层都被Java隐藏了,由jvm控制。java实现了一个跨平台的网络库。形成了统一的网络编程环境。
(2)网络编程的目的:直接或间接通过网络协议于其他计算机实现数据交互,通讯,资源共享
(4)关键:准确定位之际、高效可靠的传播
(3)网络通信的要素:通信双方的一个IP和端口号(通过一定规则----网络通信协议)
a、OSI参考模型:(互联网不广泛使用)七层:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
b、TCP/IP参考模型:四层:应用层、传输层、网络层、物理层(物理+数据链路层)
c、TCP/IP各层协议:应用层(HTTP;FTP;Telnet;DNS);传输层(TCP;UDP...);网络层(IP,ICMP,APR);物理层(link)
二、通信要素:ip和端口号
(1)ip地址(标识Internet上唯一计算机(通信实体)):InetAddress
a、String getHostName()获得主机名
b、byte[] getAddress()返回每个字节的地址
c、String getHostAddress()返回ip地址
d、boolean isReachable()测试目标地址是否能到达
e、IneetAddress localHost = InetAddress.getLocalHost本地主机地址
(2)本地回路地址:127.0.0.1 主机名:localhost
(3)IP地址的分类:ipv4和ipv6
(4)ipv4:4个字节(32位)组成(每个字节都在0-255之间,使用点分时进制);
(5)ipv6:16个字节(128位,每位16进制)
(6)公网地址(万维网),私有地址(局域网--192.168.)
(7)端口号:标识计算机上正在运行的进程
(8)端口号分类:
a、公认端口(0--1023):被预先设定的服务通信占用(http:80,ftp:21)。
b、注册端口(1024-49151):分配个用户进程(Tomcat:8080,mysql:3306,oracle:1521)
c、动态/私有端口:49152-65535
(9)ip地址的表现方式:ip地址;域名
三、通信要素:网络协议
1、TCP/IP 协议簇:TCP/IP是一组协议,TCP是传输控制写,IP是网络互联协议(网络层重要协议,主要支持网间互联的数据通信)
2、传输层主要的两种协议:传输控制协议TCP、用户数据包协议UDP
3、TCP:使用TCP协议,必须要建立TCP连接,形成传输数据通道。采用三次握手,点对点通信,是可靠的
TCP协议再进行通信的时候需要客户端和服务端
传输完毕之后,需要释放已建立的连接,四次挥手,效率低
4、UDP:将数据源封装成一个个的数据包,不需要建立连接,每个数据包大小限制再64k以内,发送双方不需要确认,不可靠。不需要建立连接,可以广播。开销小,效率高,不可靠,速度块(直播)。
四、TCP编程
1、Socket:
(1)ip和端口号就组成了一组网络套接字(Socket)。网络上唯一标识的ip和端口号就组成了唯一标识的标识符套接字。
(2)网络两端都在需要具备socket,它是两台机器通信的端点。
(3)数据在两个Socket中通过IO流的方式进行通信
(4)先写服务端Socket:
a、创建一个Socket:ServerSocket serverSocket = new ServerSocket(7765);
b、需要监听客户段发来的请求,并返回一个Socket:Socket socket = serverSocket.accept();
c、接受客户端发送的消息:InputStream is = socket.getInputStream();
d、处理消息
e、关闭资源
(5)客户端
a、创建socket对象:InetAddress inet = InetAddress.getByName("127.0.0.1");
socket = new Socket(inet, 8989);
b、获取socket对应的流:OutputStream os = socket.getOutputStream();
(6)常用方法:getInputStream()、getOutputStream()、getInteAddress();getLocalAddress();getPort();getLocalPort();close();shutdownInput();shutdownOutput();
2、Socket步骤;
(1)创建Socke对象:根据制定的服务端的ip地址和端口号
(2)获取socket的输入输出流:getInputStream/getOutputStream
(3)通过一定的协议对socket进行读写操作:TCP/IP或UDP
(4)关闭socket
五、UDP编程
1、TCP:使用tcp提供可依赖的字节流服务进行数据传输(流套接字)
2、UDP:数据报套接字:通过数据包的方式,使用DatagramSocket对象,会把数据封装成DatagramPacket,
3、UDP编程流程:
(1)建立接收端和发送端
(2)需要创建DatagramSocket和DatagramPacket对象
(3)封装数据报
(4)调用socket接收和发送方法
(5)关闭资源
六、URL编程
1、url:统一资源定位符,互联网上的某一资源地址
2、url组成:由五部分组成
<传输协议>://<主机名>:<端口号>/<资源目录>#片段名?参数列表
3、url的常用方法:
public URL(String spec)通过一个url地址,构造出一个url对象
URL(URL context,String spec) eg:new URL(new URL(""),"indext.html")
URL(String,String,String) eg:new URL("HTTP","www.baidu.com","index.html")
URL(String args1,String args2,String args3,String args4) eg:new URL("HTTPS","www.baidu.com",80,"index.html")
String getProtocol()获取URL的协议名
getHosts()获取主机名
getPath()
getFile()
getQuery()获取查询名