如何学习网络编程

лл... лл 展开
 我来答
匿名用户
2012-05-03
展开全部
1.利用WinInet函数库写了几个简单的网络应用程序:简易登录、查询新书RSS等;了解了HTTP协议的一些内容。
2.看孙鑫的VC视频教程, ,虽然照着视频能够写出实例代码来,但是仅仅是会用,其中很多原理都不理解,比如说WSA开头的异步函数,Winsock2对socket的一些增强或者改进等。
3.一边上《计算机网络》的课,一边读《C++网络编程》。通过计算机网络课我知道了所谓的协议分析是怎么一回事情,通过wireshark抓包分析,“协议”就如同这个词本身意思是一样的,是通信过程中的一种约定,规定了数据包中的每个或每几个字节代表了什么意思;
4.去看《计算机网络高级编程技术》,我初略的翻了翻,看到里面的基础、提高、综合训练篇、突然反应过来:socket和操作系统提供的系统调用,基本上都是C语言接口的,协议字段的具体表现,不就是用结构体吗?协议中的几个字节代表什么与C语言基本数据类型就能对应了起来(-_-!这是缺少实践造成的迟钝啊)。
5.了解下Boost.asio,Java的MINA框架,这些都是异步I/O前摄器模式的实现,当然还有ACE_Proactor
6.阅读《深入理解MySQL核心技术》和Linux程序设计(第3版)》,从把整个知识体系都联系起来,从socket到完整网络服务器程序,网络编程才算正式进入了门道。

所以,正常的学习路径应该是:C/C++语言 -->>计算机网络 -->>协议分析 -->>BSD Socket、OS API ( fork()、pthread_create()、select() ) -->>Reactor、Proactor模式

在这个过程我的体会是,最好是从Linux下或者Unix底下学习,比起Windows,Linux的编程接口设计更很简洁,使用的基本上都是标准的数据类型,很多源代码是开放的,而且我比较习惯于看小写的英文单词。。。我发现,如果最一开始能够从整体上了解网络编程的全景,就会知道应该学习什么,下一步该学什么,循序渐进才是好的学习方法。

我所理解的“全景”:

--计算机网络种类有很多种:ATM、X.25、Internet(大大小小的局域网互联而成,以太网、令牌网等等)

---- Internet通信的协议也有很多种,其中最核心的是TCP/IP协议

---- 网络编程接口也有很多种,BSD UNIX提出了socket,是一种通信机制,是管道概念的扩展

-------- socket有三种属性:域(或协议族)、类型、协议

-------- 最常用的协议族有AF_UNIX和AF_INET(对应现在的Internet),AF_INET的类型又有两种:数据流(tcp)和数据报 (udp)

------------ 在<sys/types.h>和<sys/socket.h>定义了socket编程的系统调用:socket()、struct sockaddr、bind()、listen()、accept()、connect()、close()、sendto()、recvfrom()

------------ 其中bind()是用来给创建的socket命名的,如果是AF_UNIX会关联到文件系统的一个路径上,如果是AF_INET则会绑定到IP的端口号上;listen()用来保存未处理的客户请求的队列;accept()等待客户端的连接,会创建新的socket用来处理客户端连接。

------------ 由于历史原因,不同的计算机使用不同的字节序来表示整数,Intel和Motorola的处理器的字节序就不一样,所以要转换为网络序(好像Unicode中的Little-Endian、Big-Endian也是这么个情况。。)

------------ 服务器必然为多客户服务的,为了提高运行效率,高效利用系统资源,就出现多进程、多线程的服务端程序,这就需要用到fork()和pthread_create()了,再往下就是select()、pull()等多路复用和异步I/O机制了。

----------------为了简化网络应用程序的开发,增加代码的复用性、扩展性、可谓性;出现了Reacotr、Preactor等设计模式,出现了ACE、Boost.asio等框架、进一步简化网络开发的难度,出现了WinInet、libcurl这样的面向应用层的函数库。
liangxunyun_
2012-05-01 · TA获得超过197个赞
知道答主
回答量:16
采纳率:0%
帮助的人:12.5万
展开全部
去 online judge做题,没有基础的话去买本书学

参考资料: www.rqnoj.cn

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江西新华电脑学院
2019-08-16 · 品牌创于1988,专注IT教育
江西新华电脑学院
江西新华电脑学院开设电子商务、软件开发、电竞、动漫设计、UI设计、室内设计、网络工程、互联网财务、VR等专业。 来校参观报销路费,报名享受国家学费减免政策,签订就业合同,毕业推荐高薪工作。
向TA提问
展开全部
建议报一个培训班,网络编程的前景很不错的,随着移动互联网的普及与发展,手机应用不断深入我们生活的方方面面,移动系统和软件应用的开发领域,成为了未来很具有潜力的行业之一。
在未来5年内,合格软件人才的需求将远大于供给。其中,尤以JAVA、PHP、HTML5与CSS3开发、Asp.net开发人才最为缺乏。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明天宝贝a
2012-05-01 · TA获得超过459个赞
知道小有建树答主
回答量:2968
采纳率:0%
帮助的人:1328万
展开全部
我可以来教你,看我的资料里有我的QQ
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式