在VC的SOCKET网络编程中,谁能说说winsock.h winsock2.h afxsock.h wsock32.lib WS2_32.lib他们的区别 5
我知道其中winsock.h与wsock32.lib一起,winsock2.h与WS2_32.lib一起,但对这其中的由来不得而知,他们之间有什么区别?为什么这样用?为什...
我知道其中winsock.h与wsock32.lib一起,winsock2.h与WS2_32.lib一起,但对这其中的由来不得而知,他们之间有什么区别?为什么这样用?为什么有的人即包含winsock.h头文件又包含winsock2.h??还有afxsock.h......谁能详解讲一讲
对于1楼同学的回答.....可能回答的方向错了,或者我的提问方法错了,1楼的回答,这些我都懂,在此谢谢。.h与.lib .dll这类的东西我都懂,我想要的答案是,好像不太好提问题,汗,比如说winsock.h必须是与wsock32.lib规定是一起的吗?我能拿afxsock.h与ws2_32.lib一起吗?等等,还有就是说说winsock1.0版本是不是就对应winsock.h头文件?winsock2.0对应winsock2.h头文件?是这样的吗?这一系列的问题!!!最后我想说的是lib,DLL我都知道是怎么个回事,也会编点简单的dll或者lib 展开
对于1楼同学的回答.....可能回答的方向错了,或者我的提问方法错了,1楼的回答,这些我都懂,在此谢谢。.h与.lib .dll这类的东西我都懂,我想要的答案是,好像不太好提问题,汗,比如说winsock.h必须是与wsock32.lib规定是一起的吗?我能拿afxsock.h与ws2_32.lib一起吗?等等,还有就是说说winsock1.0版本是不是就对应winsock.h头文件?winsock2.0对应winsock2.h头文件?是这样的吗?这一系列的问题!!!最后我想说的是lib,DLL我都知道是怎么个回事,也会编点简单的dll或者lib 展开
1个回答
展开全部
不会也是考网络编程吧?我们刚刚考好,刚复习完
我也是略懂
其实楼主还有一个没提到,就是 winsock.dll
楼主说的afxsock.h我倒是不怎么了解
其他的,他们间是这样的
所有的.h是头文件,.lib是静态库文件,.dll是动态库文件
之所以楼主能使用这些编程就是考这些分工严密的东东帮忙。
socket编程说到底就是使用网络的编程,和普通的程序不同,
socket要用到网络,那它就得用网络设备(就是网卡)。
但一般我们用来写程序的都是像c++这类高级语言,是不操作底层硬件的。
所以就需要有人来帮我们完成或者说屏蔽掉底层的操作。
大致流程是,首先,网卡会有驱动程序来驱动,一般是在系统内的.sys文件完成,
然后.dll会接管工作,此时都还是些硬件的操作,但通过动态链接库后,很多底层的细节开始被屏蔽,这里只指一些琐碎的操作.dll会帮你完成掉了,但其实.dll完成的也是个半成品,楼主也没办法直接用来编程。
于是.lib上场了,.lib将.dll处理的半成品拿来,将它们封装成一个个API,这样,我们就可以通过API来调用网卡的功能了,当然这还不够,API毕竟也是个很麻烦的东西,而且功能不够细化。
于是就做了.h,这些头文件是可以直接打开来看的,实际里面就是些调用API的命令,还有就是把和相关的业务逻辑的变量啊结构体啊给定义一下。
比如在winsock.h中会定义sockaddr_in这样的结构体,用它来表示一个主机的IP和端口很方便,不过也不复杂,楼主也当然可以定义自己的结构体,不过,正是因为这些头文件帮你定义好了很多业务中常用的变量结构体之类,使得你编程的时候能更加关心程序本身了。
大致关系就是这样子调用的。
在写程序中,头文件的包含是不能少的,静态库也必须放到程序里,当然可以通过开发环境的添加或者在程序中直接包含都行,动态链接库一般不用操心,会自带的,不过有时也会遇到损坏之类的,网上直接下一个就行了。
具体的winsock.h winsock2.h也就是些版本上的区别,就像QQ2009和QQ2010都是QQ,都能聊天,就是版本更新了,很多细小的地方有些变动而已。
我也是略懂
其实楼主还有一个没提到,就是 winsock.dll
楼主说的afxsock.h我倒是不怎么了解
其他的,他们间是这样的
所有的.h是头文件,.lib是静态库文件,.dll是动态库文件
之所以楼主能使用这些编程就是考这些分工严密的东东帮忙。
socket编程说到底就是使用网络的编程,和普通的程序不同,
socket要用到网络,那它就得用网络设备(就是网卡)。
但一般我们用来写程序的都是像c++这类高级语言,是不操作底层硬件的。
所以就需要有人来帮我们完成或者说屏蔽掉底层的操作。
大致流程是,首先,网卡会有驱动程序来驱动,一般是在系统内的.sys文件完成,
然后.dll会接管工作,此时都还是些硬件的操作,但通过动态链接库后,很多底层的细节开始被屏蔽,这里只指一些琐碎的操作.dll会帮你完成掉了,但其实.dll完成的也是个半成品,楼主也没办法直接用来编程。
于是.lib上场了,.lib将.dll处理的半成品拿来,将它们封装成一个个API,这样,我们就可以通过API来调用网卡的功能了,当然这还不够,API毕竟也是个很麻烦的东西,而且功能不够细化。
于是就做了.h,这些头文件是可以直接打开来看的,实际里面就是些调用API的命令,还有就是把和相关的业务逻辑的变量啊结构体啊给定义一下。
比如在winsock.h中会定义sockaddr_in这样的结构体,用它来表示一个主机的IP和端口很方便,不过也不复杂,楼主也当然可以定义自己的结构体,不过,正是因为这些头文件帮你定义好了很多业务中常用的变量结构体之类,使得你编程的时候能更加关心程序本身了。
大致关系就是这样子调用的。
在写程序中,头文件的包含是不能少的,静态库也必须放到程序里,当然可以通过开发环境的添加或者在程序中直接包含都行,动态链接库一般不用操心,会自带的,不过有时也会遇到损坏之类的,网上直接下一个就行了。
具体的winsock.h winsock2.h也就是些版本上的区别,就像QQ2009和QQ2010都是QQ,都能聊天,就是版本更新了,很多细小的地方有些变动而已。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询