接收端

 #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. java.util.regex.Pattern正则表达式写验证器示例

    import java.util.regex.Pattern; /** * 校验器:利用正则表达式校验邮箱.手机号等 * */ public class Validator { /** * 正则表达式 ...

  2. 位运算(5)——Power of Two

    判断一个整数是不是2的幂. 关键是弄明白2的幂的二进制形式只有一个1. public class Solution { public boolean isPowerOfTwo(int n) { int ...

  3. Cannot execute request on any known server

    1.com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: c ...

  4. URL工具类

    UrlUtils = { /** * 判断url是否存在(存在跨域问题) * @param {String} url */ isTrueUrl: function(_url) { result = f ...

  5. HTML表单(form)的“enctype”属性

    Form元素的语法中,EncType表明提交数据的格式 属性值: application/x-www-form-urlencoded:在发送前编码所有字符(默认) multipart/form-dat ...

  6. Popularize what is heart of mobile phone?

    From: http://tech.sina.com.cn/mobile/n/2014-09-29/08399657494.shtml 只谈核数没意义 带你重新认识手机SoC 2014年09月29日  ...

  7. 多线程(四)~数据操作的原子性,使用原子性操作AutomicInteger替换非原子性的i++的操作

    这一章,我们要来验证volatile关键字不是原子性的,OK,还是用代码来说话. ①.线程类,操作i++ 500次 package com.multiThread.thread; publicclas ...

  8. Linux xclock打不开时钟终端

    一般执行该操作的都是在安装oracle数据库或其他应用时,需要测试是否可以正常弹层执行的: 网络关于这个的描述和处理大片片的,但是符合自己实际情况的,还是需要直接去确认: 两步处理: 第一步: 使用r ...

  9. MovieReview—Ghost in the shell(攻壳机动队95版)

    About Future And is she really human? She’s just so something new A waking lithium flower            ...

  10. Uva 11600 期望DP

    题意:n个城市,相互可达(有n(n-1)/2条边),其中有一些道路上面有妖怪,现在,从1号城市出发,随机挑取一个城市走去,这个道路上的妖怪就会被消灭,求: 在平均情况下,需要走多少步,使得任意两个城市 ...