c语言网络编程教程
『壹』 如何学习网络编程
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这样的面向应用层的函数库。
『贰』 在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库
需要用到的头文件包含:
#include <winsock2.h>
#include <windows.h>
与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库
Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:
Winsock 1:
Windows CE平台支持。
头文件:WinSock.h
库:wsock32.lib
Winsock 2:
部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;
头文件:WinSock2.h
库:ws2_32.lib
mswsock.h用于编程扩展,使用时必须链接mswsock.dll
(2)c语言网络编程教程扩展阅读
winsock库的加载与卸载:
加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
加载成功,返回值为0。
WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~
LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。
卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。
『叁』 c语言:网络编程视频
我和你一样,也是正在学网络编程的,首先得先把C基础学会,我现在也正在学回C,看视频学的答,我现在看的是夏老师的,感觉还行,最吸引我的的地方就是讲的一听就能听懂,而且不繁琐啰嗦,简明清晰,都是重点。之前看过郝斌金文什么的,康辉的也看了一点,感觉都讲的太高深了,而且听不出哪些是重点,有用没用的都讲,像我这样初学者都看的失去学的信心了。
『肆』 c语言可以写网络程序吗
我知道用VC调用windows 网络API可以实现一些网络功能.不过要先学会一大堆乱七八糟的网络知识回.
学16位的DOS环境下的C语言主要就答是学一些语法和基本的函数.真正要编在widnows环境下应用的程序还得用VC吧.我觉得学过tourb C 再自学VC不会有啥大障碍吧.先用VC 调用winsock控件编个小局网络聊天程序.再试些复杂的windows API这样的书不少的.
『伍』 谁知道C语言socket入门教程或者书籍
先看windows api编程、搞明白后看王艳平那本windows网络编程、相当不错
『陆』 C++网络编程都要学什么
建议报一个培训班,都是零基础入学的,这是网络编程的全部课程,专要是感兴趣的话可以属了解一下:
第一阶段
1、计算机操作基础
2、Office办公自动化
3、计算机组装与维护
4、C语言
第二阶段
1、SQL Server2005数据库设计
2、和高级查询
3、数据结构
4、C#面向对象程序设计
5、HTML5与CSS3开发
6、JavaScript
7、jQuery高级编程
8、PHP开发
第三阶段
APP Development
1、JavaScript特效制作
2、jQuery应用开发
3、HTML5与CSS3开发
4、Java面向对象程序设计
第四阶段
JAVAWEB Development
1、产品流程应用
2、移动平台界面设计
3、Oracle数据库开发
4、JavaWeb应用开发
Mobile APP Development
1、实训一:WEB前端设计与开发
2、实训二:J2EE项目开发
『柒』 用C语言写windows网络编程看什么书
windows程序设计
『捌』 怎么自学C语言 入门
在开始学习C语言基础时,要反问自己为什么学C语言,如何学好C语言。同时要知道什么是C语言以及C语言的发展。
当对这些知识有了一个概念之后,就正式开始学习C语言了,其中,可能会学到数据类型、运算符、表达式、数组、/函等,这些是为了对C语言的基础有一个基础认知,扩展,整合;还会学到指针、联合体、结构体、枚举、位运算、预处理、文件等知识点,学这些是为了全面掌握面向过程设计、实练逻辑算法,拓展思维模式等过程。
学完了这些,还可能会讲到VS、VC++、C++、C和TC—认识开发环境和语言的区别。
这里只给大家介绍一个大概,如果有兴趣的话,可以和我私聊哦
第二阶段:上机实战训练
学完了这些理论知识后,就得将学到的知识点全部运用到实践中去。这样才能更好学习入门。分享不错裙的有软件视频资料分享
1、C++语言熟练,熟悉C++语法,包括面向对象的概念,模版等
这一阶段需要比较艰辛的过程,需要学习很多书,包括《C++ Programming Language》,《Effective C++》,《More Effective C++》,《Thinking in C++》,《C++对象模型》,《C++ 模版》,如果上述书籍已经很熟悉了,本人认为,在学习阶段,已经很不错了。该过程可以在大学完成,需要一到两年的时间,应为是纯理论的东西,只能算熟悉。在该过程中,需要做一些简单的程序。
2、C++做项目,使用C++做项目,需要比较多的其它库,比如UI库,还需要使用一些网络库等,这个时候,就可以看到C++的博大精深了,此时,光有C++语言知识是不够的,需要补充一些平台开发的知识,看看开源的C++项目。比如:Windows程序设计,C++网络编程,DirectX游戏开发,如果用C++做了两个以上的项目,那以及很不错了。
3、最高境界是精通,自然是量的积累才会有质地变化。
『玖』 老师的大作业是用c语言实现点对点的传输,可我没有网络编程的基础,求各位大神推荐学习这方面的视频网站
菜鸟教程,csdn查也行,只要你想学,多的是资料给你看。
『拾』 求推荐c语言网络编程方面的书
不是吧、。。。应该还不错吧
认真看也能够学到点东西的