C++ UDP C/S 简单封装(转载)
来源:互联网 发布:淘宝客服可以用手机吗 编辑:程序博客网 时间:2024/06/05 06:17
Server端类定义:
#include<Winsock2.h>#pragmacomment(lib, "ws2_32.lib") class UDPServer{private: WSADATA wsaData; SOCKET serverSocket; sockaddr_in serverSockAddr;public: UDPServer(); void setSockAddr(const char *destAddr,const int destPort); void listen(const int port); void receive() const; ~UDPServer();};
Server端实现:
#include"UDPServer.h"#include<iostream> using namespacestd; UDPServer::UDPServer(){ WSAStartup(MAKEWORD(2, 2), &wsaData); serverSocket = socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP); cout << "Server Socketinitialized" << endl;} voidUDPServer::listen(const int port){ serverSockAddr.sin_family=AF_INET; serverSockAddr.sin_port=htons(port); serverSockAddr.sin_addr.s_addr=htonl(INADDR_ANY); bind(serverSocket, (SOCKADDR*)&serverSockAddr, sizeof(serverSockAddr));} voidUDPServer::receive() const{ char buf[1024]; int serverSockAddrSize =sizeof(serverSockAddr); recvfrom(serverSocket, buf, sizeof(buf), 0,(SOCKADDR *)&serverSockAddr, &serverSockAddrSize); cout << buf << endl;} UDPServer::~UDPServer(){ closesocket(serverSocket); WSACleanup(); cout << "Server Socketreleased" << endl;}
Client端类定义:
#include<Winsock2.h>#pragmacomment(lib, "ws2_32.lib") class UDPClient{private: WSADATA wsaData; SOCKET clientSocket; sockaddr_in clientSockAddr;public: UDPClient(); void setSockAddr(const char *destAddr,const int destPort); void sendData(const char *buf, const intlen) const; ~UDPClient();};
Client端实现:
#include"udpClient.h"#include<iostream> using namespacestd; UDPClient::UDPClient(){ WSAStartup(MAKEWORD(2, 2), &wsaData); clientSocket = socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP); cout << "Client Socketinitialized" << endl;} UDPClient::~UDPClient(){ closesocket(clientSocket); WSACleanup(); cout << "Client Socketreleased" << endl;} voidUDPClient::setSockAddr(const char *destAddr, const int destPort){ clientSockAddr.sin_family = AF_INET; clientSockAddr.sin_port = htons(destPort); clientSockAddr.sin_addr.s_addr =inet_addr(destAddr);} voidUDPClient::sendData(const char *buf, const int len) const{ sendto(clientSocket, buf, len, 0, (SOCKADDR*)&clientSockAddr, sizeof(clientSockAddr));}
Server端调用:
UDPServer* server =new UDPServer;server->listen(4000);for (int i = 0; i< 20; i++){ server->receive();}delete server;
Client端调用:
const char*destAddr = "XXX.XXX.XXX.XXX";const int destPort= 4000;const charbuf[1024] = "This is a udp test message"; UDPClient* client =new UDPClient;client->setSockAddr(destAddr,destPort);for (int i = 0; i< 10; i++){ client->sendData(buf, sizeof(buf));} delete client;
阅读全文
0 0
- C++ UDP C/S 简单封装(转载)
- C++ UDP C/S 简单封装
- udp s c
- C udp实现c/s
- c语言实现简单的udp传输( c/s 模型)
- 一个简单的UDP广播例子(含C/S)
- 一个简单的UDP广播例子(含C/S)
- 一个简单的UDP广播例子(含C/S)
- TCP&UDP C/S在linux上的简单实现
- 一个简单基于UDP的回显C/S(一)
- (五十)socket编程——出错函数的封装和基于UDP的C/S模型
- C/S模型---UDP方式
- python udp c/s 记录
- Linux UDP C/S例子
- Linux UDP C/S例子
- Linux UDP C/S例子
- Linux UDP C/S例子
- Linux UDP C/S例子
- C++ 获取Windows还原点列表(2)
- magento 搬家
- 猜数字
- 使用jQuery实现顺滑折叠面板
- hadoop里面的MapReduce和yarn的运行原理
- C++ UDP C/S 简单封装(转载)
- Romantic 比较基础的扩展欧几米得问题
- 写页面常用的css特性:calc() vh vw ch和ex
- druid连接池配置
- HDOJ 1176 免费馅饼 -- 动态规划
- WIN7旗舰版下安装Vs2015
- js中的逻辑运算符
- 微信公众号开发,ios系统自带返回按钮,不刷新页面
- Python学习(基本函数)