网络编程

一、网络编程

(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()获取查询名

原文地址:https://www.cnblogs.com/JQbiu/p/11248170.html