网络编程其实也就是在具备硬件条件下(如光纤等)所实现的不同计算机之间的联系,也就是传数据,即通信。所采用的基本原理也和前面学的io流类似,也是通过创建字节输入输出流传输数据,下面我说一下自己的心得。
一、TCP/UDP协议(即传输格式)
UDP协议:也就相当于单方向传输,不需要建立联系,可以直接传输,不考虑接收方的状态,在数据传输方面速度更快,延迟更低,实时性更好,但具有不可靠性,即数据在传输时会损坏或丢失。
TCP协议:“三次握手”。第一次握手,由客户端向服务器发送请求;第二次握手,服务器接收请求后向客户端发送信息确认;第三次握手,即建立联系后进行数据传输。TCP传输数据之前需要先进行联系,即先创建通道,确保双方状态,具有可靠性,但是因为双方都需要接收信息后进行回复确认,所以相对于UDP延迟高些。
** 二、IP与端口**
每台计算机都有自己的IP(地址),而每台计算机都有不同的应用程序在运行,也就是不同的进程,这时每个计算机会随机分给这些进程一个端口号(范围0~665535)。而客户端(看成配置低的电脑)要想访问服务器(配置高的电脑)的某个应用程序,此时就需要找到服务器端的IP地址,即这台计算机(服务器)的位置。找到后相当于到了大门口,此时端口号就相当于每个小房间,对应着不同的应用程序。注意:端口号不能重复,每个端口号对应一个应用程序,前1024端口号已被系统占用,以及个别的,如3306号端口是MySQL等数据库的端口。
三、Java实现简单通信
建一个client类(客户端),通过Socket类创建一个收发数据的对象(socket),利用其构造方法直接添加IP地址及端口号,通过对象调用getOutputStream()获取网络中的输出流对象(os),调用os中的write()方法向服务器发送请求:代码如下
接着创建server类(服务器),通过ServerSocket类创建对象server,调用accept()方法接收发送请求的客户端并创建对象client,通过client对象获取网络中的输入流读取客户端传输的数据,并创建输出流回应客户端(方法原理同客户端向服务器发送请求),代码如下:
最后,先启动服务器,再由客户端发送请求,运行如下:
** 注意:在创建输入输出流时不允许两个同时首先创建输入流,否则会堵塞Socket通道。**
今天的分享先到这里,第一次写博客,如有错误,请及时指出,我修改。。。
本文转载自: https://blog.csdn.net/weixin_68768997/article/details/127468209
版权归原作者 梧桐树273 所有, 如有侵权,请联系我们删除。
版权归原作者 梧桐树273 所有, 如有侵权,请联系我们删除。