接收端

 #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 ;
}

效果图

最新文章

  1. Redis分布式集群几点说道
  2. ExceptionLess新玩法 -- 审计日志
  3. Android自学笔记:环境配置
  4. 回归 从注释开始 appledoc
  5. MVC ajax 上传文件
  6. MySql表中key的区别
  7. css3动画(transition)属性探讨
  8. Java 装箱、拆箱 包装器
  9. How to uninstall (remove) JAVA from OS X Lion
  10. #include &lt;iomanip&gt;
  11. 3.使用secureCRT连接PC,LINUX,开发板
  12. PAT (Advanced Level) 1068. Find More Coins (30)
  13. canvas动画——粒子系统(1)
  14. K:线性表的实现—链表
  15. 炫酷线条动画--svg
  16. CMDB(Configuration Management Database)资产管理系统和 运维自动化
  17. Django---cookie和session
  18. jQuery基础方法:each(),map(),index(),is()
  19. jQuery中click事件多次触发解决方案
  20. 《重构网络:SDN架构与实现》Chapter7 SDN与网络虚拟化 随笔

热门文章

  1. Java开发团队管理细则
  2. scss-&amp;父选择器标识符
  3. 2018.10.17NOIP模拟赛解题报告
  4. js实现螺旋纹理特效
  5. Git 几个重要操作指令对比
  6. Android 多个activity之间的共享数据
  7. Appcan开发之页面布局与CSS排版(转)
  8. java 实现二叉树结构基本运算详细代码
  9. jdbc、Connection pool、jndi的理解和关系
  10. day014-反射、注解