C++ Socket UDP “Hello World!”

來源:互聯網
上載者:User
//////////////////////////////////////////////////////////////////////////// UDPServer.cpp#include <stdio.h>#include <WINSOCK2.H>#pragma comment(lib,"WS2_32.lib")#define BUF_SIZE64int main(void){WSADATAwsd;SOCKETs;intnRet;// 初始化通訊端動態庫if(WSAStartup(MAKEWORD(2,2),&wsd) != 0){printf("WSAStartup failed !\n");return 1;}// 建立通訊端s = socket(AF_INET,SOCK_DGRAM,0);if(s == INVALID_SOCKET){printf("socket() failed ,Error Code:%d\n",WSAGetLastError());WSACleanup();return 1;}SOCKETsocketSrv = socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;SOCKADDR_IN addrClient;charbuf[BUF_SIZE];intlen = sizeof(SOCKADDR);// 設定伺服器位址ZeroMemory(buf,BUF_SIZE);addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(5000);// 綁定通訊端nRet = bind(socketSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));if(SOCKET_ERROR == nRet)       {           printf("bind failed !\n");           closesocket(s);           WSACleanup();           return -1;       }// 從用戶端接收資料nRet = recvfrom(socketSrv,buf,BUF_SIZE,0,(SOCKADDR*)&addrClient,&len);if(SOCKET_ERROR == nRet)       {           printf("recvfrom failed !\n");           closesocket(s);           WSACleanup();           return -1;       }// 列印來自用戶端發送來的資料printf("Recv From Client:%s\n",buf);// 向用戶端發送資料sendto(socketSrv,"UDP Hello World !",sizeof("UDP Hello World !"),0,(SOCKADDR*)&addrClient,len);closesocket(s);WSACleanup();return 0;}
//////////////////////////////////////////////////////////////////////////// UDPClient.cpp#include <stdio.h>#include <WINSOCK2.H>#pragma comment(lib,"WS2_32.lib")#define BUF_SIZE64int main(void){WSADATAwsd;SOCKETs;// 初始化通訊端動態庫if(WSAStartup(MAKEWORD(2,2),&wsd) != 0){printf("WSAStartup failed !\n");return 1;}// 建立通訊端s = socket(AF_INET,SOCK_DGRAM,0);if(s == INVALID_SOCKET){printf("socket() failed, Error Code:%d\n",WSAGetLastError());WSACleanup();return 1;}charbuf[BUF_SIZE];// 接受資料SOCKADDR_INservAddr;// 伺服器通訊端地址SOCKETsockClient = socket(AF_INET,SOCK_DGRAM,0);intnRet;ZeroMemory(buf,BUF_SIZE);strcpy(buf,"UDP Hello World !");// 設定伺服器位址servAddr.sin_family = AF_INET;servAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.254");servAddr.sin_port = htons(5000);// 向伺服器發送資料int nServAddLen = sizeof(servAddr);if(sendto(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,nServAddLen) == SOCKET_ERROR){printf("recvfrom() failed:%d\n",WSAGetLastError());closesocket(s);WSACleanup();return 1;}nRet = recvfrom(sockClient,buf,BUF_SIZE,0,(sockaddr *)&servAddr,&nServAddLen);if(SOCKET_ERROR == nRet)       {           printf("recvfrom failed !\n");           closesocket(s);           WSACleanup();           return -1;       }// 列印來自服務端發送來的資料printf("Recv From Server:%s\n",buf);closesocket(s);WSACleanup();return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.