socket是一种在Linux或者Unix下非常流行的网络编程方式,这种方式简单有效,可以很灵活的完成各种复杂的协议控制,个人感觉比使用MFC下的网络相关类库要来的更舒服一些,因为所有一切都是自己可控的。
但是使用socket编程有一个非常不方便的地方在于,由于在Linux下没有一个像VC这样强大的调试平台,网络通信过程中的错误追踪就会显得稍微复杂一些。无奈,只能尝试在VC下是否可以使用标准的socket函数来完成网络通信,借助VC强大的调试工具来达到高效率的编码目的。
在网上找了一些资料,看来VC下使用标准socket函数也不是很困难,遂将过程记录,以便后用~~
第一步,使用VC的winsock.h头文件,代替Linux下的socket相关的头文件。
第二步,为VC的工程链接winsock的库文件ws2_32.lib
以上两步可以通过下面的代码实现:
1: #ifdef _WIN32
2: #include <winsock.h>
3: #pragma comment(lib, "ws2_32.lib")
4: #else
5: #include <sys/socket.h>
6: #include <netinet/in.h>
7: #include <arpa/in.h>
8: #endif
第三步,在使用任何socket函数之前,首先使用WSAStartup函数初始化winsock,在退出应用程序前,使用WSACleanup函数清理winsock。可以使用下面的代码实现:
1: WORD wVersionRequested;
2: WSADATA wsaData;
3: int err;
4: wVersionRequested = MAKEWORD( 1, 1 );
5: // init winsock before using socket functions