SOCKET例子.docx

上传人:b****8 文档编号:11453745 上传时间:2023-03-01 格式:DOCX 页数:11 大小:15.13KB
下载 相关 举报
SOCKET例子.docx_第1页
第1页 / 共11页
SOCKET例子.docx_第2页
第2页 / 共11页
SOCKET例子.docx_第3页
第3页 / 共11页
SOCKET例子.docx_第4页
第4页 / 共11页
SOCKET例子.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

SOCKET例子.docx

《SOCKET例子.docx》由会员分享,可在线阅读,更多相关《SOCKET例子.docx(11页珍藏版)》请在冰豆网上搜索。

SOCKET例子.docx

SOCKET例子

1.简单服务器

//#include

//#pragmacomment(lib,"WS2_32.lib")

WSADATAwsd;

staticUINTport=%%1;

UINTListen(LPVOIDpParam)

{

SOCKETsServer,sClient;

charbuf[1024];

intretVal;

if(WSAStartup(MAKEWORD(2,2),&wsd)!

=0)

{

return-1;//失败

}

sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sServer)

{

WSACleanup();

return-1;//创建套接字失败

}

SOCKADDR_INaddrServ;

addrServ.sin_family=AF_INET;

addrServ.sin_port=htons((short)pParam);

addrServ.sin_addr.s_addr=INADDR_ANY;

retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

WSACleanup();

return-1;//绑定套接字失败

}

retVal=listen(sServer,1);

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

WSACleanup();

return-1;//开始监听失败

}

sockaddr_inaddrClient;

intaddrClientlen=sizeof(addrClient);

sClient=accept(sServer,(sockaddrFAR*)&addrClient,&addrClientlen);

if(INVALID_SOCKET==sClient)

{

closesocket(sServer);

WSACleanup();

return-1;//开始接受客户端连接失败

}

ZeroMemory(buf,sizeof(buf));

retVal=recv(sClient,buf,sizeof(buf),0);

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

closesocket(sClient);

WSACleanup();

return-1;//接收数据失败

}

CString%%2(buf);

closesocket(sServer);

closesocket(sClient);

WSACleanup();

return0;

}

CWinThread*pThread=AfxBeginThread(Listen,&port);

2.简单客户端

//#include

//#pragmacomment(lib,"WS2_32.lib")

WSADATAwsd;

SOCKETsHost;

SOCKADDR_INservAddr;

charbuf[1024];

intretVal;

if(WSAStartup(MAKEWORD(2,2),&wsd)!

=0)

{

return-1;//失败

}

sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sHost)

{

WSACleanup();

return-1;//创建套接字失败

}

servAddr.sin_family=AF_INET;

servAddr.sin_addr.s_addr=inet_addr(%%3);

servAddr.sin_port=htons((short)%%2);

intnServAddlen=sizeof(servAddr);

retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr));

if(SOCKET_ERROR==retVal){

closesocket(sHost);

WSACleanup();

return-1;//连接服务器失败

}

ZeroMemory(buf,sizeof(buf));

strcpy(buf,%%3);

retVal=send(sHost,buf,sizeof(buf),0);

if(SOCKET_ERROR==retVal)

{

closesocket(sHost);

WSACleanup();

return-1;//向服务器发送数据失败

}

closesocket(sHost);

WSACleanup();

3.获得本机IP

//#include

//#pragmacomment(lib,"WS2_32.lib")

WSADATAwsd;

if(WSAStartup(MAKEWORD(2,2),&wsd)!

=0)

{

return-1;//失败

}

charszHostname[100],szHostaddress[200];

if(gethostname(szHostname,sizeof(szHostname))!

=SOCKET_ERROR)

{

HOSTENT*pHostEnt=gethostbyname(szHostname);

if(pHostEnt!

=NULL){

sprintf(szHostaddress,"%d.%d.%d.%d",

(pHostEnt->h_addr_list[0][0]&0x00ff),

(pHostEnt->h_addr_list[0][1]&0x00ff),

(pHostEnt->h_addr_list[0][2]&0x00ff),

(pHostEnt->h_addr_list[0][3]&0x00ff));

}

}

else

return;

CString%%1(szHostaddress);

4.端对端通信

//#include

//#pragmacomment(lib,"WS2_32.lib")

WSADATAwsd;

SOCKETs;

charbuf[1024];

if(WSAStartup(MAKEWORD(2,2),&wsd)!

=0)

{

return-1;//失败

}

s=socket(AF_INET,SOCK_DGRAM,0);

if(s==INVALID_SOCKET)

{

WSACleanup();

return-1;//创建套接字失败

}

SOCKADDR_INservAddr;

servAddr.sin_family=AF_INET;

servAddr.sin_addr.s_addr=inet_addr(%%1);

servAddr.sin_port=htons(INADDR_ANY);

if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)

{

closesocket(s);

WSACleanup();

return-1;//绑定套接字失败

}

intnServAddrlen=sizeof(servAddr);

ZeroMemory(buf,sizeof(buf));

if(recvfrom(s,buf,sizeof(buf),0,(SOCKADDR*)&servAddr,&nServAddrlen)==SOCKET_ERROR)

{

closesocket(s);

WSACleanup();

return-1;//接收数据失败

}

CString%%2(buf);

ZeroMemory(buf,sizeof(buf));

strcpy(buf,%%3);

SOCKADDR_INclientAddr;

clientAddr.sin_family=AF_INET;

clientAddr.sin_addr.s_addr=inet_addr(%%4);

clientAddr.sin_port=htons((short)%%5);

intnClientlen=sizeof(clientAddr);

if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)

{

closesocket(s);

WSACleanup();

return-1;//向服务器发送数据失败

}

closesocket(s);

WSACleanup();

5.点对点通信

//#include

//#pragmacomment(lib,"WS2_32.lib")

WSADATAwsd;

SOCKADDR_INaddrServ,addrServ2;

SOCKETsServer,sClient,sHost;

intretVal;

sockaddr_inaddrClient;

charbuf[1024];

staticUINTport=%%2;

BOOLlistenerRun=TRUE;

UINTListen(LPVOIDpParam)

{

addrServ.sin_family=AF_INET;

addrServ.sin_port=htons((UINT)pParam);

addrServ.sin_addr.s_addr=INADDR_ANY;

retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

WSACleanup();

return-1;//绑定套接字失败

}

retVal=listen(sServer,1);

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

WSACleanup();

return-1;//开始监听失败

}

intaddrClientlen=sizeof(addrClient);

sClient=accept(sServer,(sockaddrFAR*)&addrClient,&addClientlen);

if(INVALID_SOCKET==sClient)

{

closesocket(sServer);

WSACleanup();

return-1;//接收客户端请求失败

}

while(listenerRun)

{

ZeroMemory(buf,sizeof(buf));

retVal=recv(sClient,buf,sizeof(buf));

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

closesocket(sClient);

WSACleanup();

return-1;//接收客户端数据失败

}

CString%%4(buf);

}

}

if(WSAStartup(MAKEWORD(2,2),&wsd)!

=0)

{

return-1;//失败

}

sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sServer)

{

WSACleanup();

return-1;//创建套接字失败

}

CWinThread*pThread=AfxBeginThread(Listen,&port);

sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==sHost)

{

WSACleanup();

return-1;//创建套接字失败

}

servAddr2.sin_family=AF_INET;

servAddr2.sin_addr.s_addr=inet_addr(%%1);

servAddr.sin_port=htons((short)%%3);

intnServerAddrlen=sizeof(servAddr2);

retVal=connect(sHost,(LPSOCKADDR)&servAddr2,sizeof(servAddr2));

if(SOCKET_ERROR==retVal)

{

closesocket(sHost);

WSACleanup();

return-1;//连接失败

}

zeroMemory(buf,sizeof(buf));

strcpy(buf,%%5);

retVal=send(sHost,buf,sizeof(buf),0);

if(SOCKET_ERROR==retVal)

{

closesocket(sHost);

WSACleanup();

return-1;//向发送数据失败

}

listenerRun=FALSE;

DWORDdwExitCode;

:

:

GetExitCodeThread(pThread->m_hThread,&dwExitCode);

pThread=null;

closesocket(sServer);

closesocket(sClient);

closesocket(sHost);

WSACleanup();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1