关于 winsock 服务器和客户端编程 2008 年 12 月 28 日 星期日 23:22 在网络编程中,最常用和最基础的就是 WINSOCK. 现在我们讨论 WINDOWS 下的SOCKET 编程. 大凡在 WIN32 平台上的 WINSOCK 编程都要经过下列步骤: 定义变量->获得 WINDOCK 版本->加载 WINSOCK 库->初始化->创建套接字->设置套接字选项->关闭套接字->卸载 WINSOCK 库->释放资源 下面介绍 WINSOCK C/S 的建立过程: 服务器 客户端 ________________________________________________ 1 初始化 WSA 1 初始化 WSA ____________________________________________________ 2 建立一个 SOCKET 2 建立一个 SOCKET _____________________________________________________ 3 绑定 SOCKET 3 连接到服务器 _____________________________________________________ 4 在指定的端口监听 4 发送和接受数据 _____________________________________________________ 5 接受一个连接 5 断开连接 ______________________________________________________- 6 发送和接受数据 ___________________________________________________ 7 断开连接 __________________________________________________ 大家注意,在 VC 中进行 WINSOCK 编程时,需要引入如下两个库文件:WINSOCK.H(这个是 WINSOCK API 的头文件,WIN2K 以上支持WINSOCK2,所以 可以用 WINSOCK2.H);Ws2_32.lib(WINSOCK API 连接库文件). 使用方式如下: #include #pragma comment(lib,"ws2_32.lib") 下面我们通过具体的代码演示服务器和客户端的工作流程: 首先,建立一个 WSADATA 结构,通常用 wsaData WSADATA wsaData; 然后,调用 WSAStartup 函数,这个函数是连接应用程序与 winsock.dll 的第一个调用.其中,第一个参数是 WINSOCK 版本号,第二个参数是指向 WSADATA 的指针.该函数返回一个 INT 型值,通过检查这个值来确定初始化是否成功.调用格式如下:WSAStartup(MAKEWORD(2,2),&wsaData),其中 MAKEWORD(2,2)表示使用 WINSOCK2 版本.wsaData 用来存储系统传回的关于 WINSOCK 的资料. if(iResuit=WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { printf("WSAStartup failed:%d",GetLastError()); //返回值不等与 0,说明初始化失败 ExitProcess(); //退出程序 } 应用程序在完成对请求的 SOCKET 库使用后,要调用 ...