接收端

 #include <stdio.h>
#include <WinSock2.h> #pragma comment(lib,"WS2_32.lib") int main(void)
{
WSADATA wsd; // 初始化Socket的变量
SOCKET s; // 用于通信的Socket句柄
SOCKADDR_IN sRecvAddr,sSendAddr; // 分别为接收地址和发送地址
USHORT uPort = ; // 通信端口
CHAR szBuf[] = { }; // 通信数据缓冲区
int nBufLen = ,nResult = , nSenderAddrSize = sizeof(sSendAddr); // 初始化Socket2.2版本
nResult = WSAStartup(MAKEWORD(, ), &wsd);
if (nResult != NO_ERROR)
{
printf("WSAStartup failed:%d\n", WSAGetLastError());
return ;
} // 创建一个Socket,SOCK_DGRAM表示UDP类型
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s == INVALID_SOCKET)
{
printf("socket failed:%d\n", WSAGetLastError());
return ;
} // 填充Socket接口
sRecvAddr.sin_family = AF_INET; // 地址协议,AF_INET支持TCP和UDP
sRecvAddr.sin_port = htons(uPort); // 通信端口,htons转为网络字节顺序
sRecvAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); // 接收任意地址数据 // 绑定Socket至本机
nResult = bind(s, (SOCKADDR *)&sRecvAddr, sizeof(sRecvAddr));
if (nResult != )
{
printf("bind failed:%d\n", WSAGetLastError());
return ;
} printf("Waiting recv data...\n");
// 阻塞式接收数据
nResult = recvfrom(s, szBuf, nBufLen, , (SOCKADDR *)&sSendAddr, &nSenderAddrSize);
if (nResult == SOCKET_ERROR)
{
printf("recvfrom failed:%d\n", WSAGetLastError());
}
else{
printf("SenderIP :%s\n", inet_ntoa(sSendAddr.sin_addr));
printf("SenderData:%s\n", szBuf);
}
// 关闭Socket连接
nResult = closesocket(s);
if (nResult == SOCKET_ERROR)
{
printf("closesocket failed:%d\n", WSAGetLastError());
return ;
}
// 清理Socket
WSACleanup(); system("pause");
return ;
}

发送端

#include <stdio.h>
#include <WinSock2.h>
#include <Windows.h> #pragma comment(lib,"WS2_32.lib") int main(void)
{
WSADATA wsd;
SOCKET s; if (WSAStartup(MAKEWORD(, ), &wsd))
{
printf("WSAStartup failed!\n");
return ;
} s = socket(AF_INET, SOCK_DGRAM, );
if (s == INVALID_SOCKET)
{
printf("socket failed,Error Code:%d\n", WSAGetLastError());
WSACleanup();
return ;
}
SOCKADDR_IN addr;
SOCKET sockClient = socket(AF_INET, SOCK_DGRAM, ); addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr("172.18.0.67");
addr.sin_port = htons(); sendto(sockClient, "测试UDP通信!", , , (sockaddr *)&addr, );
closesocket(s);
WSACleanup();
printf("Hello World!\n");
system("pause");
return ;
}

效果图

C/C++使用Socket通信UDP的更多相关文章

  1. UNIX下socket通信 - UDP通信

    一.UNIX下socket通信: socket套接字是一种可以进行网络通信的内核对象,它是一个唯一的标示符,一般称它为socket描述符. 注意:UDP通信需要客户端先发送消息,服务端先进行等待客户端 ...

  2. Linux 网络编程六(socket通信UDP版)

    //udp接收消息 #include <stdio.h> #include <stdlib.h> #include <string.h> #include < ...

  3. 基于TCP和UDP的Socket通信

    TCP的Socket通信 TCP是面向连接的,安全的协议,它是一对一的关系 server client 上面只是单个客户端同服务器通信,可使用多线程编程实现多个客户端的通信 UDP的Socket通信 ...

  4. C#的Socket实现UDP协议通信

    今天稍花化了一点时间,利用C#的Socket验证了UDP的通信,为接下来特地利用UDP做个分布式的通信仿真系统打下基础.众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层.与TC ...

  5. Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

    转载地址:http://blog.csdn.net/mad1989/article/details/9147661 ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当 ...

  6. Android中Socket通信之TCP与UDP传输原理

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...

  7. Linux C++ UDP Socket通信实例

    环境:Linux 语言:C++ 通信方式:UDP 服务器端的步骤如下: 1. socket:      建立一个socket 2. bind:          将这个socket绑定在某个端口上(A ...

  8. 27.Socket,TCP,UDP,HTTP基本通信原理

    Socket,TCP,UDP,HTTP基本通信原理(摘自百度): TCP.UDP,HTTP 底层通信都是通过 socket 套接字实现 网络上不同的计算机,也可以通信,那么就得使用网络套接字(sock ...

  9. Linux 下socket通信终极指南(附TCP、UDP完整代码)

    linux下用socket通信,有TCP.UDP两种协议,网上的很多教程把两个混在了一起,或者只讲其中一种.现在我把自己这两天研究的成果汇总下来,写了一个完整的,适合初学者参考,也方便自己以后查阅. ...

随机推荐

  1. python 对象属性与 getattr & setattr

    Python对象的属性可以通过obj.__dict__获得,向其中添加删除元素就可以实现python对象属性的动态添加删除的效果,不过我们应该使用更加正规的getattr和setattr来进行这类操作 ...

  2. Nodejs 如何制作命令行工具

    # 全局安装,安装报错是需要前面加上sudo $ sudo npm install -g xxxb # 输出帮助 $ xxxb -h Usage: xxxb 这里是我私人玩耍的命令哦![options ...

  3. matlab练习程序(圆柱投影)

    圆柱投影就是将一张二维的图像投影到三维的圆柱体上,不过在显示图像的时候依然是以二维的形式给出. 投影最重要的步骤就是计算投影变换公式,和图像旋转类似,只要得到变换公式,再依照公式进行代码编写就很容易了 ...

  4. linux下的动态链接库管理

    LD_LIBRARY_PATH Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径.(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动 ...

  5. DevExpress控件水印文字提示 z

    ButtonEdit.Properties.NullValuePrompt = "提示"; ButtonEdit.Properties.NullValuePromptShowFor ...

  6. tensorflow报错 tensorflow Resource exhausted: OOM when allocating tensor with shape

    在使用tensorflow的object detection时,出现以下报错 tensorflow Resource exhausted: OOM when allocating tensor wit ...

  7. June 13th 2017 Week 24th Tuesday

    There are no regrets in life, just lessons. 人生中没有后悔,只有教训. Some people can learn from their past mist ...

  8. 如何清理Windows缩略图缓存?

    从Win95的IE4开始就有缩略图缓存了,缩略图缓存作用主要是用于存储Windows资源管理器缩略图图像文件.这加快了图像的显示速度,因为每次用户查看文件夹时都不需要重新生成这些较小的图像.缩略图缓存 ...

  9. 因子和&&因子数

    给定一数n,求n的因子数目和因子之和 上述求因子和式子等于 ∏{(piei+1 - 1) / (pi - 1)}  (∏就是连乘) 模板: +; int prime[maxn]; bool is_pr ...

  10. Android——Intent,Bundle

    Intent——切换activity intent.setClass(first.this,second.class); startActivity(intent); Bundle——切换时数据传递 ...