网络通信基础入门:
在通信过程中,我们需要有一个服务器,和若干个客户端。我们要在每一个客户端和服务器之间都建立一个通道,即输入输出流。这个通道是客
户端与服务器相之间用于传输数据的通道。而服务器的作用则是将一个或多个客户端传来的信息整合,然后做出相应的处理。所以说,服务器就好像是一
只手,对客户端之间的信息传递经行操作。故在通信的过程中,我们必须至少有一个服务器。
我们一般需要以下几个步骤:
1.创建服务器与客户端:
2.连接
3.获取输入输出流
4.传输数据
1.服务器:这里我们需要用到一个类,java.net.ServerSocket,这是一个服务器类,例如:
//创建服务器
ServerSocket socket = new ServerSocket(5200);
//等待连接
Socket client = socket.accept();
就创建了一个空的服务器,并让服务器进入等待状态。当客户端与服务器创建连接后,就会返回一个服务器类,可以用于获取通道。这里的“5200”指的
是我们对于服务器所要绑定的端口,每一台电脑都会有0~65535个端口,这些端口是通信过程中每个服务器所在的区域,就像是每个学校都会有很多学院
,如果不知道我们要寻找的学院的位置,就无法联系找到学院里的人一样。对于端口,一般我们所设定的不能为0~1024之间,因为这是一个系统占用的区
间,当然,更不能超过65535了。
2.客户端:从理论上讲,只要有一个电脑在某个端口上绑定了一个服务器。并且另外一台电脑和他在同一个局域网中。那么就可以用命令提示符中的
telnet命令进入该服务器,格式为:
telnet 服务器所在电脑的IP地址 绑定的端口
然而,一般情况下我们直接用客户端类Socket,直接进入服务器经行连接,例如:
Socket client = new Socket("192,168.0.1", 5200);
这句话就是创建一个客户端,并与IP地址为192,168.0.1的电脑上的5200端口经行连接,如果连接成功,服务器与客户端就会有一个通道,我们可以用流
来获取通道。
3.通道:获取通道,在服务器中,当accept();运行后,会返回一个客户端类,这就是与服务器建立连接的那个客户端,我们可以用这个客户端来创建输
入输出流。而在客户端中,自己本身就是个客户端,故可以直接用自己的客户端创建输出输出流。
4.连接:当服务器和客户端之间的联系都准备就绪后,就可以传输数据了。申明一下,服务器与客户端之间并不是对立的个体,服务器只是一个工具,一
个用于处理数据的工具而已,但却是整个通信的核心。因为客户端之间是没有连接通道的,必须通过服务器来操控。服务器的操控行为,直接影响到数据
的传输的意义,例如这串数据是表示的是一条信息,还是一条直线,还是一张图片,都是由通信协议的制定,并由服务器处理成有效数据,传给其他客户
端的。
5.通信协议:在数据传输中,最底层的传输都是通过字节的传输来完成的。这样一来,就会导致一个问题,当我得到一堆字节的时候,每个字节所代表什
么意思呢?这就需要协议的制定。比如传输一幅图,和前面的“哈夫曼压缩”一样,压缩和解压要形成一种规定,通信传输也一样,我们是先传输的长或
者先传输高,这都是一种协议,有了这些协议,才能将数据清除的传输,并且让人能够读懂。
实践:
那么下面让我们开始做一个简单的聊天吧!