當前位置:編程學習大全網 - 編程語言 - SOCKET編程裏send 和Receive函數的使用

SOCKET編程裏send 和Receive函數的使用

這可是我自己總結的,LZ不要誤會哦~~!

1.簡單服務器

//#include <winsock2.h>

//#pragma comment(lib,"WS2_32.lib")

WSADATA sServer,sClient;

chat buf[1024];

int retVal;

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_IN addrServ;

addrServ.sin_family=AF_INET;

addrServ.sin_port=htons(%%1);

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;//開始監聽失敗

}

socketaddr_in addrClient;

int addrClientlen=sizeof(addrClient);

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

if(INVALID_SOCKET==sClient)

{

closesocket(sServer);

WSACleanup();

return -1;//開始接受客戶端連接失敗

}

ZeroMemory(buf,sizeof(buf));

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

if(SOCKET_ERROR==retVal)

{

closesocket(sServer);

closesocket(sClient);

WSACleanup();

return -1;//接收數據失敗

}

CString %%2(buf);

closesocket(sServer);

closesocket(sClient);

WSACleanup();

2.簡單客戶端

//#include <winsock2.h>

//#pragma comment(lib,"WS2_32.lib")

WSADATA sHost;

SOCKADDR_IN addrServ;

chat buf[1024];

int retVal;

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(%%1);

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

int nServAddlen=size(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 <winsock2.h>

//#pragma comment(lib,"WS2_32.lib")

/*

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

{

return -1;//失敗

}

*/

//#pragma comment(lib,"WS2_32.lib")

char szHostname[100],szHostaddress[200];

if(gethostname(szHostname,info(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);

  • 上一篇:phpcms和php168哪個好?說明壹下理由!
  • 下一篇:我的u盤格式化完,為什麽不能下載了
  • copyright 2024編程學習大全網