郑州游戏学院—陈跃峰老师的博客

人生难得几回博,来,让我们博一把

陈跃峰ID:Mailbomb
689452次访问,排名45好友104人,关注者241
努力学习,努力工作
Mailbomb的文章
原创 275 篇
翻译 12 篇
转载 11 篇
评论 1167 篇
陈跃峰的公告
陈跃峰 个人简历
cqucyf@gmail.com

本BLOG中文章,未经允许严禁用于商业目的!

本人编写的J2ME基础入门书籍: 《新编J2ME就业培训教程》,购买
dearbook
华储网
当当网
Chinapub
最近评论
so_fast:不错。说的很好。顶一个
muyuqian:问题描述:每只母鸡3元,每只公鸡4元,每只小鸡0.5元,如果花100元钱买100只鸡,请问有哪些可能?说明:每种鸡的数量都可以为零。

用你提供的两种方法,反而求不出数量为零的组合.
我稍微改变了一下,似乎可以.
for(int i = 0;i <= 33;i++){//母鸡数量
……
#:很好的教导文章,谢谢
hepenghit:不错,辛苦了,顶了
想认识您的人:有时间可以和您聊聊吗 我的联系电话 13643827325 QQ125475945 您要有时间请加我下或者给我邮箱发个信息 www.hanjianhai1981@163.com
文章分类
收藏
    相册
    J2ME技术
    J2ME开发网
    无线空间
    Java网站
    Eclipse官方网站
    Sun中国
    Sun官方网站
    常用网站
    Chinabyte
    Google搜索引擎
    华军软件园
    新浪新闻
    网上书店
    ITbook
    互动出版网
    当当书店
    第二书店
    我工作过的地方
    上海托普信息技术学院
    游戏学院南京校区
    游戏学院郑州校区
    电脑报
    友情链接
    acqy的专栏
    eiyaa的专栏
    上海求职客栈
    刀剑啸的专栏
    刘军的BLOG
    王新钢的BLOG
    贝壳鱼(k7sem)专栏
    骄傲的猫
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Java编程那些事儿9——网络编程基础收藏

    新一篇: 征求大家对于《Java编程那些事儿》的意见和建议

    Java编程那些事儿9——网络编程基础

    作者:陈跃峰

    出自:http://blog.csdn.net/mailbomb

    1.4 网络编程基础

             对于初学者,或者没有接触过网络编程的程序员,会觉得网络编程涉及的知识很高深,很难,其实这是一种误解,当你的语法熟悉以后,其实基本的网络编程现在已经被实现的异常简单了。

    1.4.1 网络编程是什么?

             网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据。

             现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。

             在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序被称作服务器(Server)。客户端程序可以在需要的时候启动,而服务器为了能够时刻相应连接,则需要一直启动。例如以打电话为例,首先拨号的人类似于客户端,接听电话的人必须保持电话畅通类似于服务器。

             连接一旦建立以后,就客户端和服务器端就可以进行数据传递了,而且两者的身份是等价的。

             在一些程序中,程序既有客户端功能也有服务器端功能,最常见的软件就是BTemule这类软件了。

             下面来谈一下如何建立连接以及如何发送数据。

    1.4.2 IP地址和域名

             在现实生活中,如果要打电话则需要知道对应人的电话号码,如果要寄信则需要知道收信人的地址。在网络中也是这样,需要知道一个设备的位置,则需要使用该设备的IP地址,具体的连接过程由硬件实现,程序员不需要过多的关心。

             IP地址是一个规定,现在使用的是IPv4,既由40-255之间的数字组成,在计算机内部存储时只需要4个字节即可。在计算机中,IP地址是分配给网卡的,每个网卡有一个唯一的IP地址,如果一个计算机有多个网卡,则该台计算机则拥有多个不同的IP地址,在同一个网络内部,IP地址不能相同。IP地址的概念类似于电话号码、身份证这样的概念。

             由于IP地址不方便记忆,所以有专门创造了域名(Domain Name)的概念,其实就是给IP取一个字符的名字,例如163.comsina.com等。IP和域名之间存在一定的对应关系。如果把IP地址类比成身份证号的话,那么域名就是你的姓名。

             其实在网络中只能使用IP地址进行数据传输,所以在传输以前,需要把域名转换为IP,这个由称作DNS的服务器专门来完成。

             所以在网络编程中,可以使用IP或域名来标识网络上的一台设备。

    1.4.3 端口的概念

             为了在一台设备上可以运行多个程序,人为的设计了端口(Port)的概念,类似的例子是公司内部的分机号码。

             规定一个设备有216个,也就是65536个端口,每个端口对应一个唯一的程序。每个网络程序,无论是客户端还是服务器端,都对应一个或多个特定的端口号。由于0-1024之间多被操作系统占用,所以实际编程时一般采用1024以后的端口号。

             使用端口号,可以找到一台设备上唯一的一个程序。

             所以如果需要和某台计算机建立连接的话,只需要知道IP地址或域名即可,但是如果想和该台计算机上的某个程序交换数据的话,还必须知道该程序使用的端口号。

    1.4.4 数据传输方式

             知道了如何建立连接,下面就是如何传输数据了,先来看一下数据传输的方式。

             在网络上,不管是有线传输还是无线传输,数据传输的方式有两种:

    l  TCP(Transfer Control Protocol)

    传输控制协议方式,该传输方式是一种稳定可靠的传送方式,类似于显示中的打电话。只需要建立一次连接,就可以多次传输数据。就像电话只需要拨一次号,就可以实现一直通话一样,如果你说的话不清楚,对方会要求你重复,保证传输的数据可靠。

    使用该种方式的优点是稳定可靠,缺点是建立连接和维持连接的代价高,传输速度不快。

    l  UDP(User Datagram Protocol)

    用户数据报协议方式,该传输方式不建立稳定的连接,类似于发短信息。每次发送数据都直接发送。发送多条短信,就需要多次输入对方的号码。该传输方式不可靠,数据有可能收不到,系统只保证尽力发送。

    使用该种方式的优点是开销小,传输速度快,缺点是数据有可能会丢失。

             在实际的网络编程中,大家可以根据需要选择任何一种传输方式,或组合使用这两种方式实现数据的传递。

    1.4.5 协议的概念

             协议(Protocol)是网络编程中一个非常重要的概念,指的是传输数据的格式。因为大家在网络中需要传输各种各样的信息,在程序中获得到的都是一组数值,如何阅读这些数值呢,就需要提前规定好这组数据的格式,在客户端按照该格式生成发送数据,服务器端按照该格式阅读该数据,然后在按照一定的格式生成数据反馈给客户端,客户端再按照该格式阅读数据。现实中类似的例子就是电报编码,每个数字都是用特定的数据表达。

             一般程序的协议都分成客户端发送的数据格式,以及服务器端反馈的数据格式,客户端和服务器端都遵循该格式生成或处理数据,实现两者之间的复杂数据交换。

    1.4.6 小结

             网络编程就是使用IP地址,或域名,和端口连接到另一台计算机上对应的程序,按照规定的协议(数据格式)来交换数据,实际编程中建立连接和发送、接收数据在语言级已经实现,做的更多的工作是设计协议,以及编写生成和解析数据的代码罢了,然后把数据转换成逻辑的结构显示或控制逻辑即可。

             需要了解更多的网络编程的知识,建议阅读《JAVA2网络协议内幕》一书。

     

    发表于 @ 2008年04月09日 12:52:00|评论(loading...)|编辑

    旧一篇: Java编程那些事儿8——计算机内部的数据表达

    评论

    #qqwmly 发表于2008-04-09 21:28:00  IP: 60.216.234.*
    java 的网络编程太难了,我以为

    http://www.xyking.cn
    #Macromicro 发表于2008-04-10 10:23:00  IP: 221.212.235.*
    我又是板凳啊,下次一定要沙发!
    #lbfhappy 发表于2008-04-10 13:20:44  IP: 124.229.19.*
    不对吧,应该是TCP的速度比UDP快很多吧
    虽然TCP的代价比较高.但是能用TCP还是尽量用TCP传数据的
    #ChristinaChen 发表于2008-04-10 14:52:51  IP: 221.220.232.*
    我基础太薄,没看懂,55
    #zhitao_he 发表于2008-04-10 16:28:22  IP: 222.131.59.*
    楼上的错了,是UDP比TCP速度快,但是TCP比UDP更可靠
    #xtpl1986 发表于2008-04-10 21:09:49  IP: 119.1.125.*
    页面有问题还是我的浏览器有问题?
    2008-04-10 22:53:05作者回复
    可能是你的浏览器的问题吧
    #lbfhappy 发表于2008-04-11 13:31:43  IP: 124.229.6.*
    其实可以写一段代码来测试是UDP传的快还是TCP传得快
    在局域网内做测试也可以,在广域网做测试也可以
    否则,QQ传文件的时候,就不会尽量用TCP了,它是先尝试用TCP来传,如果失败的话,再用UDP来传的.
    并且我以前测试的时候,局域网内TCP的速度可以达到9M/s,则UDP也就只有300K/s而已
    #sunmicrofee 发表于2008-04-12 00:51:58  IP: 58.20.3.*
    UDP的速度怎么会比TCP的速度快呢?
    谁能解释下不?
    #ldsea 发表于2008-04-13 22:24:56  IP: 123.114.100.*
    因为UDP不需要握手,只管发送,不需要关心对方收到了没有,TCP是需要对方确认的
    #djsl6071 发表于2008-04-17 13:08:54  IP: 59.59.6.*
    发表一些不成熟的意见:
    UDP和TCP之间的快慢并不是绝对的,它们的区别在协议上的验证环节,有验证意味着有保障一点,那么传输速度的区别就将体现在网络性能上,如果网络性能不好,UDP无疑会比TCP慢,因为实际传输的有效数据打了折扣;如果网络性能好,两者的差别就小得多。
    #wangtao222 发表于2008-04-17 17:10:53  IP: 116.21.37.*
    在网络知识上,应该是UDP比TCP快,因为TCP需要确认连接后才开始发送,而UDP不需要!但在实际传输数据时,没求证过。可能会与网络性能有关。
    #BatiTan 发表于2008-04-22 11:11:19  IP: 125.120.134.*
    感觉很不错....
    UDP传输就像手机发短信息一样,呵呵
    #gracestoney 发表于2008-04-23 21:02:25  IP: 125.119.85.*
    UP~
    #debugself 发表于2008-04-25 09:40:50  IP: 219.137.11.*
    关注
    #chenning007 发表于2008-04-30 20:24:49  IP: 220.181.38.*
    #kimishen 发表于2008-05-06 10:37:17  IP: 218.242.132.*
    好文章
    #yjyga 发表于2008-05-12 22:55:32  IP: 125.33.141.*
    TCP&&UDP各自用在哪些场合
    #JFFLoveSky 发表于2008-05-13 20:30:19  IP: 123.6.180.*
    关注,
    #whg8645465 发表于2008-05-21 20:38:40  IP: 125.40.153.*
    各有所长
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 陈跃峰