Socket之UDP通信例子
来源:互联网 发布:u盘数据怎么恢复 编辑:程序博客网 时间:2024/05/04 20:38
UDP通信方式:
1,客户端不需要进行连接,而是直接访问服务器通过sendto来发送数据,recvfrom接受数据
2,服务端,不需要监听、接受等待客户端请求,当收到客户端socket通过sendto来回应客户端请求。
Client端:
#include <winsock2.h>#include <iostream>#pragma comment(lib, "WS2_32.lib")const unsigned int PORT = 11024;const int kBufferSize= 1024;int main() {WSADATA wsData;if(WSAStartup(MAKEWORD(2, 2), &wsData) != 0) {std::cout << "start up failed\n" << std::endl;return 0;}// connect the socket;SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);SOCKADDR_IN addIn;addIn.sin_family = AF_INET;addIn.sin_port = htons(PORT);addIn.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");char cSendBuffer[kBufferSize] = "Client sends a Message to the Server, please confirm?";int bRecvLen = sizeof(addIn);int bSendRet = sendto(s, cSendBuffer, kBufferSize, 0, (LPSOCKADDR)&addIn, sizeof(addIn));while(bSendRet != SOCKET_ERROR) {char cRecvBuffer[kBufferSize] = "#";int bRecv = recvfrom(s, cRecvBuffer, kBufferSize, 0, (LPSOCKADDR)&addIn, &bRecvLen);if(bRecv != SOCKET_ERROR) {std::cout << "Client recvie the infromation from the server is: " << cRecvBuffer << std::endl;ZeroMemory(cSendBuffer, kBufferSize);std::cout << "please input the information the sends to the server: ";std::cin >> cSendBuffer;bSendRet = sendto(s, cSendBuffer, kBufferSize, 0, (LPSOCKADDR)&addIn, sizeof(addIn));} else{break;}}if(WSACleanup() != 0) {std::cout << "clean up failed\n";return -1;}closesocket(s);return 0;}
#include <iostream>#include <winsock2.h>#pragma comment(lib, "WS2_32.lib")const unsigned int PORT = 11024;const int kBufferSize= 1024;int main() {WSADATA wsData;if(WSAStartup(MAKEWORD(2, 2), &wsData) != 0) {std::cout << "start failed" << std::endl;return -1;}//SOCKET s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);SOCKADDR_IN addIn;addIn.sin_family = AF_INET;addIn.sin_port = htons(PORT);addIn.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");int bBindRet = bind(s, (LPSOCKADDR) &addIn, sizeof(addIn));if(bBindRet != 0) {std::cout << "bind failed" << std::endl;return -1;}char cRecvBuffer[kBufferSize];int ilen = sizeof(addIn);int iRecv = recvfrom(s, cRecvBuffer, kBufferSize, 0, (LPSOCKADDR)&addIn, &ilen);while(iRecv != SOCKET_ERROR) {std::cout << "recvie information: " << std::endl;char cSendBuffer[kBufferSize];std::cout << "Input the information that the client sends; " << std::endl;std::cin >> cSendBuffer;sendto(s, cSendBuffer, kBufferSize, 0, (LPSOCKADDR)&addIn, sizeof(addIn));}if(WSACleanup() != 0) {std::cout << "Clean up failed" << std::endl;return -1;}return 0;}
0 0
- Socket之UDP通信例子
- Socket之UDP通信
- UDP之socket通信
- socket之UDP通信
- socket的UDP通信简单例子
- 基于udp的socket编程小例子之使用多线程进行通信
- Socket之UDP套接字小例子
- socket通信---UDP通信
- Java网络编程之UDP通信例子
- PHP的Socket通信之UDP篇
- socket通信之 udp协议2
- Socket 之 UDP 协议通信-c#实现
- Socket之TCP和UDP协议通信
- linux C ----- udp, tcp, unix socket通信简单例子
- Socket通信学习实例四之UDP通信
- 【通信方式六】socket编程之UDP通信
- C# Udp Socket例子
- C# Udp Socket例子
- Java加密技术(七)——非对称加密算法最高级ECC
- unity5.0版本特性
- iOS开源库
- phonegap/cordova 升级版本
- leetcode:Excel Sheet Column Title
- Socket之UDP通信例子
- C++编程学习52个经典网站 强力推荐
- phonegap安装 环境搭建与配置详解( 完整版 提供下载地址)
- lucene索引的增删改查
- 软件需求分析
- 彩票案例-TbaBar覆盖问题
- 天声人語 20150317
- java 编程tips
- Ace - Responsive Admin Template