资源描述:
《c++多线程通信例子》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于winsock服务器和客户端编程2008年12月28日星期日23:22在网络编程中,最常用和最基础的就是WINSOCK.现在我们讨论WINDOWS下的SOCKET编程.大凡在WIN32平台上的WINSOCK编程都要经过下列步骤:定义变量->获得WINDOCK版本->加载WINSOCK库->初始化->创建套接字->设置套接字选项->关闭套接字->卸载WINSOCK库->释放资源下面介绍WINSOCKC/S的建立过程:服务器客户端________________________________________________1初始化WSA1初始化WSA__________________
2、__________________________________2建立一个SOCKET2建立一个SOCKET_____________________________________________________3绑定SOCKET3连接到服务器_____________________________________________________4在指定的端口监听4发送和接受数据_____________________________________________________5接受一个连接5断开连接_____________________________________
3、_________________-6发送和接受数据___________________________________________________7断开连接__________________________________________________大家注意,在VC中进行WINSOCK编程时,需要引入如下两个库文件:WINSOCK.H(这个是WINSOCKAPI的头文件,WIN2K以上支持WINSOCK2,所以可以用WINSOCK2.H);Ws2_32.lib(WINSOCKAPI连接库文件).使用方式如下:#include#pragmacomment
4、(lib,"ws2_32.lib")下面我们通过具体的代码演示服务器和客户端的工作流程:首先,建立一个WSADATA结构,通常用wsaDataWSADATAwsaData;然后,调用WSAStartup函数,这个函数是连接应用程序与winsock.dll的第一个调用.其中,第一个参数是WINSOCK版本号,第二个参数是指向WSADATA的指针.该函数返回一个INT型值,通过检查这个值来确定初始化是否成功.调用格式如下:WSAStartup(MAKEWORD(2,2),&wsaData),其中otherstaffoftheCentre.Duringthewar,Zhuwastransfer
5、redbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,Director
6、ofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,MinistersandMAKEWORD(2,2)表示使用WINSOCK2版本.wsaData用来存储系统传回的关于WINSOCK的资料.if(iResuit=WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("WSAStartupfailed:%d",GetLastError());//返回值不等与0,说明初始化失败ExitProcess();//退出程序}应用程序在完成对请求的
7、SOCKET库使用后,要调用WSACleanup函数来接触SOCKET库的绑定,并且释放资源.注意WSAStartup初始化后,必须建立一个SOCKET结构来保存SOCKET句柄.下面我们建立一个SOCKET.首先我们建立一个m_socket的SOCKET句柄,接着调用socket()函数,函数返回值保存在m_socket中.我们使用AF_INFE,SOCK_STREAM,IPPROTO_TCP三个参数.第一个表示地址族,AF_IN