网页编程软件百度云(编程资源网站)

   抖音SEO    

网络编程的目的: 直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。

实现网络通信需要解决的两个问题:



每层对应的协议:

属性

IPv4

IPv4

地址长度

IPv4协议具有32位(4字节)地址长度

IPv6协议具有128位(16字节)地址长度

格式

IPv4 地址的文本格式为 nnn.nnn.nnn.nnn,其中 0<=nnn<=255,而每个 n 都是十进制数。可省略前导零。

IPv6 地址的文本格式为 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个 x 都是十六进制数可省略前导零。

数量

共有43亿,30亿在北美,4亿在亚洲,2011年就已经用尽

多到每一粒沙子都可以分配一个IPv6地址

:::



在Java语言中使用InetAddress类代表IP。

端口的分类:


记住一点,我们编写的程序要占用端口号的话占用1024以上的端口号,1024以下的端口号不要去占用,因为系统有可能会随时征用。
端口号本身又分为TCP端口和UDP端口,TCP的8888端口和UDP的8888端口是完全不同的两个端口。
TCP端口和UDP端口都有65535个

:::tip TCP三次握手
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立TCP 连接并同步连接双方的序列号和确认号并交换 TCP窗口大小信息,在socket编程中,客户端执行 connect()时。将触发三次握手。
:::


:::tip TCP四次挥手
TCP的连接是全双工的,所以连接的拆除需要单独将两个通道分别拆除,而四次挥手所做的事情就是拆除两条通道和释放资源。
:::


总结一下:
三次握手: 最少需要三次,保证稳定连接! ①A:你瞅啥? ②B:瞅你咋地? ③A:干一场!
四次挥手 情人节版本: ①A:分手吧! ②B:真的要分手吗? ③B:(确认一次)真的真的要分手吗? ④A:分手!

使用Java进行网络编程时,由虚拟机实现了底层复杂的网络协议,Java程序只需要调用Java标准库提供的接口,就可以简单高效地编写网络程序。JAVA中对网络编程的支持都封装在java.net包中,并提供了两种常见的网络协议的支持:TCP和UDP。

TCP是可靠的连接,TCP就像打电话,需要先打通对方电话,等待对方有回应后才会跟对方继续说话,也就是一定要确认可以发信息以后才会把信息发出去。TCP上传任何东西都是可靠的,只要两台机器上建立起了连接,在本机上发送的数据就一定能传到对方的机器上。

UDP就好比发电报,发出去就完事了,对方有没有接收到它都不管,所以UDP是不可靠的。

TCP传送数据虽然可靠,但传送得比较慢;UDP传送数据不可靠,但是传送得快。

下面针对JAVA中提供的TCP和UDP相关支持API进行总结。

JAVA提供的类 ServerSocket 和 Socket 实现了基于 TCP 协议网络程序。

我们将TCP协议简化一下,就只有三个核心功能:建立连接、发送数据以及接收数据,这就是Socekt编程的几个步骤了。

搞懂什么是Socket后,无论是Java还是C#,或是其它语言,Socket编程的步骤都类似的。

以下步骤在两台计算机之间使用套接字建立TCP连接时会出现:

1)服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。

2)服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。

3)服务器正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。

4)Socket 类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则在客户端创建一个 Socket 对象能够与服务器进行通信。

5)在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket。

6)连接建立后,通过使用 I/O 流在进行通信,每一个socket都有一个输出流和一个输入流,客户端的输出流连接到服务器端的输入流,而客户端的输入流连接到服务器端的输出流。


::: info JAVA的Socket编程API
针对上面的每个步骤,Java中提供了友好的API供我们调用,下面分别进行介绍。
:::

ServerSocket 类有四个构造方法:

//创建绑定到特定端口的服务器套接字


ServerSocket 类有四个常用方法:

Socket 类有五个构造方法:

Socket 构造方法返回,并没有简单的实例化了一个 Socket 对象,它实际上会尝试连接到指定的服务器和端口。

Socket 类有八个常用方法:

注意客户端和服务器端都有一个 Socket 对象,所以无论客户端还是服务端都能够调用上面这些方法。

客户端发送信息给服务端并获得服务端的返回数据显示到控制台,服务端将数据显示在控制台上

服务端实例

客户端实例

Java提供的类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。

::: info 介绍

UDP的两个常用构造方法:

UDP的三个常用方法:

服务端实例

客户端实例

 标签:

评论留言

我要留言

欢迎参与讨论,请在这里发表您的看法、交流您的观点。