- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vcsocket通信.
vc socket通信
技术_通信编程 2009-08-07 15:45:11 阅读591 评论0 字号:大中小
sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字。在这个程序中,将两个工程添加到一个工作区。要链接一个ws2_32.lib的库文件。
服务器端编程的步骤:
1:加载套接字库,创建套接字(WSAStartup()/socket());
2:绑定套接字到一个IP地址和一个端口上(bind());
3:将套接字设置为监听模式等待连接请求(listen());
4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());
5:用返回的套接字和客户端进行通信(send()/recv());
6:返回,等待另一连接请求;
7:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
服务器端代码如下:
#include?stdio.h
#include?Winsock2.h
void?main()
{
?WORD?wVersionRequested;
?WSADATA?wsaData;
?int?err;
?
?wVersionRequested?=?MAKEWORD(?1,?1?);
?
?err?=?WSAStartup(?wVersionRequested,?wsaData?);
?if?(?err?!=?0?)?{
??return;
?}
?
?if?(?LOBYTE(?wsaData.wVersion?)?!=?1?||
????????HIBYTE(?wsaData.wVersion?)?!=?1?)?{
??WSACleanup(?);
??return;
?}
?SOCKET?sockSrv=socket(AF_INET,SOCK_STREAM,0);
?SOCKADDR_IN?addrSrv;
?addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
?addrSrv.sin_family=AF_INET;
?addrSrv.sin_port=htons(6000);
?
?bind(sockSrv,(SOCKADDR*)addrSrv,sizeof(SOCKADDR));
?listen(sockSrv,5);
?SOCKADDR_IN?addrClient;
?int?len=sizeof(SOCKADDR);
?while(1)
?{
??SOCKET?sockConn=accept(sockSrv,(SOCKADDR*)addrClient,len);
??char?sendBuf[50];
??sprintf(sendBuf,Welcome?%s?to?here!,inet_ntoa(addrClient.sin_addr));
??send(sockConn,sendBuf,strlen(sendBuf)+1,0);
??char?recvBuf[50];
??recv(sockConn,recvBuf,50,0);
??printf(%s\n,recvBuf);
??closesocket(sockConn);
?}
}
客户端编程的步骤:
1:加载套接字库,创建套接字(WSAStartup()/socket());
2:向服务器发出连接请求(connect());
3:和服务器端进行通信(send()/recv());
4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。
客户端的代码如下:
#include?stdio.h
#include?Winsock2.h
void?main()
{
?WORD?wVersionRequested;
?WSADATA?wsaData;
?int?err;
?
?wVersionRequested?=?MAKEWORD(?1,?1?);
?
?err?=?WSAStartup(?wVersionRequested,?wsaData?);
?if?(?err?!=?0?)?{
??return;
?}
?
?if?(?LOBYTE(?wsaData.wVersion?)?!=?1?||
????????HIBYTE(?wsaData.wVersion?)?!=?1?)?{
??WSACleanup(?);
??return;
?}
?SOCKET?sockClient=socket(AF_INET,SOCK_STREAM,0);
?
?SOCKADDR_IN?a
文档评论(0)