`
文昌平蓝杰
  • 浏览: 54663 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java 网络通信零基础入门-------理论篇

阅读更多

网络通信基础入门:
在通信过程中,我们需要有一个服务器,和若干个客户端。我们要在每一个客户端和服务器之间都建立一个通道,即输入输出流。这个通道是客

户端与服务器相之间用于传输数据的通道。而服务器的作用则是将一个或多个客户端传来的信息整合,然后做出相应的处理。所以说,服务器就好像是一

只手,对客户端之间的信息传递经行操作。故在通信的过程中,我们必须至少有一个服务器。
我们一般需要以下几个步骤:
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.通信协议:在数据传输中,最底层的传输都是通过字节的传输来完成的。这样一来,就会导致一个问题,当我得到一堆字节的时候,每个字节所代表什

么意思呢?这就需要协议的制定。比如传输一幅图,和前面的“哈夫曼压缩”一样,压缩和解压要形成一种规定,通信传输也一样,我们是先传输的长或

者先传输高,这都是一种协议,有了这些协议,才能将数据清除的传输,并且让人能够读懂。

实践:
那么下面让我们开始做一个简单的聊天吧!

  • 大小: 28.7 KB
3
3
分享到:
评论
7 楼 文昌平蓝杰 2012-11-25  
实践篇正在更新....
6 楼 chy996633 2012-10-30  
挺好的~!
5 楼 Java小K 2012-10-30  
期待后续课程,对网络方面的东西一窍不通,希望能通过楼主写的东西学到点相关的知识
4 楼 筱筱梦 2012-10-29  
嗯,我会跟踪审查的。。。  
3 楼 文昌平蓝杰 2012-10-29  
瓶鱼跃 写道
楼主讲的是基础的tcp/ip通信。

嗯,这是最好理解的嘛,后面会有实践篇和对UDP的分析
2 楼 瓶鱼跃 2012-10-29  
楼主讲的是基础的tcp/ip通信。
1 楼 筱筱梦 2012-10-29  
明白了那么一点点。。。   嘻嘻。。。

相关推荐

Global site tag (gtag.js) - Google Analytics