A. 在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
(1)windows网络编程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);比起加载,卸载的函数真是轻松愉快。
B. 我想自学windows内核编程以及C语言网络编程(之前完全没接触过),已经掌握C、C++,应该如何入手
《windows核心编程》距离windows内核编程还差得远啦,《windows核心编程》是一本讲述windows应用程序开发的书。你真正需要掌握的是操作系统方面的知识,例如怎么样创建一个线程、创建一个进程、如何遍历文件夹,控制他们的访问权限,内存映射等。
然后开始看操作系统方面的书,比如《操作系统 : 精髓与设计原理(原书第6版) 》,《现代操作系统(原书第3版)》这样有一定理论深度的书,这些理论的书没有代码,但你在看的时候也要想想这些东西是怎么实现的。
有了一定的基础之后,可以开始看内核编程方面的书,例如潘爱民写的《windows内核原理与实现》,再高级一点的看毛德操写的《Windows内核情景分析》,最权威的当然还是《深入解析Windows操作系统》,然后你就可以深入windows内核编程了。不过提醒你就是这3本的难度在《windows核心编程》之上,要花好多年功夫,写好多万行代码,泡好多个论坛看别人的贴子,看很多别人博客,好多别的辅助读物,才能都看懂。楼主要量力而行。
网络编程的话,windows方面我也不知道哪本书好,我真心推荐《UNIX网络编程》(1,2卷)和《UNIX环境高级编程》。
C. c语言的网络编程特点有哪些(在线等待,答得好马上给分!)
1、你说得用C语言开发网络程序,一定指的是在WIN/UNIX/LINUX/SOLARIS/FreeBSD等多进程/多线程操作系统下的编程,网络编程是基于B/S或者C/S架构的,无论那种,S都需要有多线程或者子进程的处理与客户端通信的能力,DOS下的C是不具备这个能力。另外,网络程序是对操作系统多线程/多进程能力要求很高的应用,所以UNIX下的C编程能很好的满足要求。
2、网络编程只要遵从一种协议,语言是没有限定的,比较各种语言编写的网路应用的特点,归根结底还是回到这种语言已经它存在的操作系统的特点。相比与其他语言开发的网络程序,用UNIX/SOKCET/C这种模式开发的网络应用能最大限度的利用系统资源,同时兼备UNIX的稳定性和C的高效率,是大型网络应用经常采用的方式,例如着名的freeBSD,大量的论坛都是这样的方式。很多网络应用,离开UNIX和C,在重连接负荷的情况下是无法工作的。
3、但是由于高效与通用是一对矛盾,UNIX/C开发的网络应用,比较靠近系统底层,代码的可移植性、可重用性相对于使用winsock编程的WINDOWS/C++方案的网络应用要差一些,windows的MFC已经对网络协议做了很多层的封装,使用C++来继承可以节省大量开发时间。
4、结论,如果你想开发自己全新的网络应用/协议,并且要承担很重的用户访问负荷,那么你可以用C,而且操作系统要用UNIX/LINUX,如果你仅仅希望用已经成熟的internet协议写一些界面漂亮的网络应用,推荐你用WINDOWS/C++方式。