C++ Socket UDP范例
这是C++ SOCKET网络程序中的C/S结构之UDP "Hello World !",共两个控制台工程:
- //
- // UDPServer.cpp
- #include <stdio.h>
- #include <WINSOCK2.H>
- #pragma comment(lib,"WS2_32.lib")
- #define BUF_SIZE 64
- int main(void)
- {
- WSADATA wsd;
- SOCKET s;
- int nRet;
- // 初始化套接字动态库
- 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;
- }
- SOCKET socketSrv = socket(AF_INET,SOCK_DGRAM,0);
- SOCKADDR_IN addrSrv;
- SOCKADDR_IN addrClient;
- char buf[BUF_SIZE];
- int len = 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_SIZE 64
- int main(void)
- {
- WSADATA wsd;
- SOCKET s;
- // 初始化套接字动态库
- 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;
- }
- char buf[BUF_SIZE]; // 接受数据
- SOCKADDR_IN servAddr; // 服务器套接字地址
- SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0);
- int nRet;
- 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;
- }
程序运行效果:
源代码下载地址:
http://www.rayfile.com/files/733c832e-a2d8-11de-a838-0014221b798a/
http://blog.csdn.net/wangningyu/article/details/4560835
C++ Socket UDP范例相关推荐
- c语言linux TCP长连接 socket收发范例 断开自动重连
原文链接:https://blog.csdn.net/chenhao0568/article/details/103420615 c语言linux TCP长连接 socket收发范例 断开自动重连 改 ...
- Python多人聊天室-基于socket UDP协议
简介 使用Python编写的基于socket UDP通信的多功能即时聊天室,包含Tkinter编写的图形化聊天界面,功能包括有账号注册和登录,登录成功后可以查看在线用户,并和聊天室内的其他在线用户聊天 ...
- Socket UDP、TCP 简介
文章目录 Socket UDP.TCP 简介 1.1 Java 获取 IP.URL 1.2 UDP 服务端\客户端 1.3 TCP 服务端/客户端 Socket UDP.TCP 简介 1.1 Java ...
- ios 接收 c# socket udp 组播
最近用wcf 服务 给ios和安卓做接口,做了几个ios的项目 用udp 组播 让ios多终端接收和刷新方法 做一个简单的小例子会把工程给大家下载的 c#代码:netSocketUDP.rar io ...
- socket udp
2019独角兽企业重金招聘Python工程师标准>>> 基于udp的socket编程第三方库,需导入头文件 AsycUdpSocket.h 服务器端: //1.初始化serverso ...
- python socket sendto sendall_网络通信 Python Socket UDP Select
前言 工作中遇到各种各样的网络通信.有MQTT和CoAP这样的物联网应用层协议,也有各种自定义的TCP或UDP协议.使用各种不同的计算机语言和框架开发网络通信,例如Java的Netty框架,C语言原始 ...
- Python网络编程(1.利用socket(udp)+网络调试助手,发送数据)
1.socket(简称 套接字) 是进制间通信的一种方式,它与其他进程间通信的一个主要不同是: 它能实现不同主机间的进程间通信,我们网络上各种各样的服务器大多数都是基于Socket 来完成通信的 2 ...
- Socket UDP无连接通信
从Socket接收数据报:recvfrom 从一个UDPsocket中接收数据通过recvfrom函数来获得通过代替者recv函数: ssize_t recvfrom(int socketDescri ...
- 让人迷糊的 socket udp 连接问题
公司内部的一个 golang 中间件报 UDP 连接异常的日志,问题很明显,对端的服务挂了,自然重启下就可以了. 哈哈,但让我疑惑的问题是 udp 是如何检测对端挂了? err: write udp ...
最新文章
- Linux下为什么ls直接就可以运行,而你的程序要写./dir1/dir2/bin/bwa才可以
- iOS开发UI篇—核心动画简介
- C++STL常用集合算法
- Zookeeper基础使用机制原理
- 注释嵌套注释_注释,无处不在的注释
- LeetCode 29. 两数相除(位运算)
- Literal Web 服务器控件
- 【第一组】beta发行说明
- 树莓派配置RTC时钟(DS3231,I2C接口)
- flume学习(九):使用Morphline Interceptor
- 比特鹏哥第一节课笔记
- guid主分区表损坏如何处理_【硬盘分区表错误】硬盘分区表错误原因_硬盘分区表损坏...
- wr885n虚拟服务器设置,TP-Link TL-WR885N V4路由器上网设置方法
- 数独解法/n皇后的回溯算法
- 由浅入深学习Flash制作赛车游戏教程
- 哔哩哔哩(bilibili)视频下载-支持4K
- ToolsOh第6批收录
- 关于 Redlock 的讨论
- pfx格式密钥库修改密码
- 开区网站打开自动播放音乐的添加跟修改教程