Socket编程 简易测试socket UDP

来源:互联网 发布:怎么查找淘宝评论过的 编辑:程序博客网 时间:2024/03/29 03:10

简易测试程序,用于测试使用socket 实现UDP.

程序结构简单,仅有相关函数的使用.旨在明确新手对于socket的学习方向.


服务器程序:

// SocketUDPSrv.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <winsock2.h>#include <windows.h>#include <iostream>using namespace std;#pragma comment(lib,"ws2_32.lib")int main(int argc, char* argv[]){//Initialize ws2_32.libWSADATA wsaData;WORD wVerionRequested;int ret;wVerionRequested = MAKEWORD(2,2);ret = WSAStartup(wVerionRequested,&wsaData);if (ret == SOCKET_ERROR){::MessageBox(NULL,"WSAStartup Error","demon",MB_OK | MB_ICONERROR);return -1;}cout << "Initialize ws2_32.lib...done..." << endl;SOCKET srv_socket;srv_socket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);if (srv_socket == SOCKET_ERROR){::MessageBox(NULL,"socket Error","demon",MB_OK | MB_ICONERROR);return -1;}cout << "create socket...done..." << endl;sockaddr_in srv_addr;srv_addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);srv_addr.sin_family =  AF_INET;srv_addr.sin_port = htons(6000);ret = bind(srv_socket,(SOCKADDR *)&srv_addr,sizeof(srv_addr));if (ret == SOCKET_ERROR){cout << WSAGetLastError()<<endl;::MessageBox(NULL,"bind Error","demon",MB_OK | MB_ICONERROR);return -1;}cout << "bind...done..." << endl;cout << "receive data...";char recv_buf[256];sockaddr_in from_addr;int fromlen = sizeof(SOCKADDR);//ret = recvfrom(srv_socket,recv_buf,256,0,(SOCKADDR *)&from_addr,&fromlen);int i = 0;while(i < 3){//ret = recvfrom(srv_socket,recv_buf,256,0,NULL,NULL);ret = recvfrom(srv_socket,recv_buf,256,0,(SOCKADDR *)&from_addr,&fromlen);if (ret == SOCKET_ERROR){cout << WSAGetLastError()<<endl;::MessageBox(NULL,"recvfrom Error","demon",MB_OK | MB_ICONERROR);return -1;}cout << recv_buf << endl;i++;}cout <<"done...\n";closesocket(srv_socket);WSACleanup();return 0;}

客户端程序:

// SocketUDPClient.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <winsock2.h>#include <windows.h>#include <iostream>using namespace std;#pragma comment(lib,"ws2_32.lib")int main(int argc, char* argv[]){WSADATA wsaData;WORD wVerionRequested;int ret;wVerionRequested = MAKEWORD(2,2);ret = WSAStartup(wVerionRequested,&wsaData);if (ret == SOCKET_ERROR){::MessageBox(NULL,"WSAStartup Error","demon",MB_OK | MB_ICONERROR);return -1;}SOCKET client_socket;client_socket = socket(AF_INET,SOCK_DGRAM,0);if (client_socket == SOCKET_ERROR){::MessageBox(NULL,"socket Error","demon",MB_OK | MB_ICONERROR);return -1;}//²»ÐèÒªbind//·þÎñÆ÷¶ËµÄµØÖ·ºÍ¶Ë¿Úsockaddr_in addrSrv;addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addrSrv.sin_family  = AF_INET;addrSrv.sin_port = htons(6000);char send_buf[256];sprintf(send_buf,"Hello.....");ret = sendto(client_socket,send_buf,strlen(send_buf) + 1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));if (ret == SOCKET_ERROR){cout << WSAGetLastError() << endl;::MessageBox(NULL,"sendto Error","demon",MB_OK | MB_ICONERROR);return -1;}cout << "done..." << endl;closesocket(client_socket);WSACleanup();return 0;}


原创粉丝点击