Java编程那些事儿9——网络编程底子[Java编程]
本文“Java编程那些事儿9——网络编程底子[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
关于初学者,大概没有接触过网络编程的程序员,会认为网络编程触及的知识很高深,很难,其实这是一种曲解,当你的语法熟习今后,其实基本的网络编程目前已经被实现的非常简单了.
1.4.1 网络编程是什么?
网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传送本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后承受别的一个设备反馈的数据.
目前的网络编程基本上都是基于恳求/呼应方法的,也就是一个设备发送恳求数据给别的一个,然后接纳另一个设备的反馈.
在网络编程中,发动衔接程序,也就是发送第一次恳求的程序,被称作客户端(Client),等候其他程序衔接的程序被称作服务器(Server).客户端程序可以在需求的时刻启动,而服务器为了可以时刻呼应衔接,则需求一向启动.比方以打电话为例,首先拨号的人近似于客户端,接听电话的人必须保持电话通畅近似于服务器.
衔接一旦成立今后,就客户端和服务器端便可以举行数据传送了,并且二者的身份是等价的.
在一些程序中,程序既有客户端功效也有服务器端功效,最常见的软件就是BT、emule这类软件了.
下面来谈一下若何成立衔接以及若何发送数据.
1.4.2 IP地址和域名
在实际生活中,假如要打电话则需求知道对应人的电话号码,假如要寄信则需求知道收信人的地址.在网络中也是这样,需求知道一个设备的位置,则需求利用该设备的IP地址,具体的衔接历程由硬件实现,程序员不需求过量的关心.
IP地址是一个规定,目前利用的是IPv4,既由4个0-255之间的数字构成,在计算机内部存储时只需求4个字节便可.在计算机中,IP地址是分配给网卡的,每个网卡有一个唯一的IP地址,假如一个计算机有多个网卡,则该台计算机则拥有多个差别的IP地址,在同一个网络内部,IP地址不能相同.IP地址的概念近似于电话号码、身份证这样的概念.
由于IP地址不便利记忆,所以有专门创造了域名(Domain Name)的概念,其实就是给IP取一个字符的名字,比方163.com、sina.com等.IP和域名之间存在一定的对应关系.假如把IP地址类比成身份证号的话,那么域名就是你的姓名.
其实在网络中只能利用IP地址举行数据传输,所以在传输从前,需求把域名转换为IP,这个由称作DNS的服务器专门来完成.
所以在网络编程中,可以利用IP或域名来标识网络上的一台设备.
1.4.3 端口的概念
为了在一台设备上可以运行多个程序,人为的计划了端口(Port)的概念,近似的例子是公司内部的分机号码.
规定一个设备有216个,也就是65536个端口,每个端口对应一个唯一的程序.每个网络程序,无论是客户端还是服务器端,都对应一个或多个特定的端口号.由于0-1024之间多被操作系统占用,所以实际编程时普通采取1024今后的端口号.
利用端口号,可以找到一台设备上唯一的一个程序.
所以假如需求和某台计算机成立衔接的话,只需求知道IP地址或域名便可,但是假如想和该台计算机上的某个程序交换数据的话,还必须知道该程序利用的端口号.
1.4.4 数据传输方法
知道了若何成立衔接,下面就是若何传输数据了,先来看一下数据传输的方法.
在网络上,不管是有线传输还是无线传输,数据传输的方法有两种:
<!--[if !supportLists]-->l <!--[endif]-->TCP(Transfer Control Protocol)
传输掌握协议方法,该传输方法是一种安定坚固的传送方法,近似于显示中的打电话.只需求成立一次衔接,便可以多次传输数据.就像电话只需求拨一次号,便可以实现一向通话一样,假如你说的话不清楚,对方会要求你反复,保证传输的数据坚固.
利用该种方法的长处是安定坚固,缺陷是成立衔接和保持衔接的代价高,传输速度不快.
<!--[if !supportLists]-->l <!--[endif]-->UDP(User Datagram Protocol)
用户数据报协议方法,该传输方法不成立安定的衔接,近似于发短信息.每次发送数据都直接发送.发送多条短信,就需求多次输入对方的号码.该传输方法不坚固,数占据大概收不到,系统只保证极力发送.
利用该种方法的长处是开销小,传输速度快,缺陷是数占据大概会丧失.
在实际的网络编程中,大家可以按照需求挑选任何一种传输方法,或组合利用这两种方法实现数据的传送.
1.4.5 协议的概念
协议(Protocol)是网络编程中一个非常重要的概念,指的是传输数据的格局.因为大家在网络中需求传输各种各样的信息,在程序中获得到的都是一组数值,若何阅读这些数值呢,就需求提早规定好这组数据的格局,在客户端按照该格局生成发送数据,服务器端按照该格局阅读该数据,然后在按照一定的格局生成数据反馈给客户端,客户端再按照该格局阅读数据.实际中近似的例子就是电报编码,每个数字都是用特定的数据表达.
普通程序的协议都分成客户端发送的数据格局,以及服务器端反馈的数据格局,客户端和服务器端都遵守该格局生成或处理数据,实现二者之间的复杂数据交换.
1.4.6 小结
网络编程就是利用IP地址,或域名,和端口衔接到另一台计算机上对应的程序,按照规定的协议(数据格局)来交换数据,实际编程中成立衔接和发送、接纳数据在语言级已经实现,做的更多的工作是计划协议,以及编写生成和解析数据的代码罢了,然后把数据转换成逻辑的构造显示或掌握逻辑便可.
需求理解更多的网络编程的知识,倡议阅读《JAVA2网络协议底细》一书.
文章根源:http://blog.csdn.net/Mailbomb/archive/2008/04/09/2269502.aspx
以上是“Java编程那些事儿9——网络编程底子[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |