Server

#include <stdio.h>
#include <Ws2tcpip.h>
#include <winsock2.h>
#define HELLO_PORT 7905
#define HELLO_GROUP "224.0.0.1"
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;//初始化
//初始化Socket
WSAStartup(MAKEWORD(2, 2), &wsaData);

sockaddr_in6 RecvAddr; //服务器地址
sockaddr_in6 SenderAddr = { AF_INET6, htons(6060) }; //本地地址

char RecvBuf[1024];//发送数据的缓冲区
int BufLen = 1024;//缓冲区大小
//创建接收数据报的socket
SOCKET RecvSocket = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP); bind(RecvSocket, (SOCKADDR*)&SenderAddr, sizeof(SenderAddr));

int SenderAddrSize = sizeof(RecvAddr);
printf("服务的接收:\n");
while (1)
{
strcpy_s(RecvBuf, "hello");
int l_nLen = recvfrom(RecvSocket, RecvBuf,BufLen, 0, (SOCKADDR*)&RecvAddr, &SenderAddrSize);

if (l_nLen < 0)
{
perror("发送失败");
exit(1);
}

printf("\nSend:");
for (int i = 0; i < strlen(RecvBuf); i++)
{
printf("%02x ", (UCHAR)RecvBuf[i]);
}
int l_nReadLen = sendto(RecvSocket, RecvBuf, strlen(RecvBuf), 0, (SOCKADDR*)&RecvAddr, SenderAddrSize);
printf("\nread:");
for (int i = 0; i < l_nReadLen; i++)
{
printf("%02x ", RecvBuf[i]);
}
Sleep(1000);

}
//调用Recvfrom函数在绑定的socket上接收数据
//关闭socket,结束接收数据
closesocket(RecvSocket);
//释放资源,退出
WSACleanup();
return 0;
}

Cilect

#include <stdio.h>
#include <Ws2tcpip.h>
#include <winsock2.h>
#define HELLO_PORT 7905
#define HELLO_GROUP "224.0.0.1"
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;//初始化
//初始化Socket
WSAStartup(MAKEWORD(2, 2), &wsaData);

sockaddr_in6 RecvAddr = { AF_INET6, htons(6060) }; //服务器地址
inet_pton(AF_INET6, "fe80::4c09:7105:c377:4bc7", &RecvAddr.sin6_addr); //服务器IP
sockaddr_in6 SenderAddr = { AF_INET6, htons(7000) }; //本地地址

char SendBuf[1024]; //发送数据的缓冲区
int BufLen = 1024; //缓冲区大小
//创建Socket对象
SOCKET SendSocket = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);

bind(SendSocket, (SOCKADDR*)&SenderAddr, sizeof(SenderAddr));

int l_naddLen1 = sizeof(SenderAddr);
printf("客户端发送:\n");
while (1)
{
strcpy_s(SendBuf, "hello");
int l_nLen = sendto(SendSocket, SendBuf, strlen(SendBuf), 0, (SOCKADDR*)&RecvAddr, sizeof(RecvAddr));
if (l_nLen < 0)
{
perror("发送失败");
exit(1);
}

printf("\nSend:");
for (int i = 0; i < strlen(SendBuf); i++)
{
printf("%02x ", (UCHAR)SendBuf[i]);
}
int l_nReadLen = recvfrom(SendSocket, SendBuf, BufLen, 0, (struct sockaddr*)&SenderAddr, &l_naddLen1);
printf("\nread:");
for (int i = 0; i < l_nReadLen; i++)
{
printf("%02x ", SendBuf[i]);
}
Sleep(1000);

}
//发送完成,关闭Socket
closesocket(SendSocket);
WSACleanup();
return 0;

}

windows下IPv6通信(C++、MFC)的更多相关文章

  1. 转:windows下多线程通信方法

    多线程知识简介 同一进程中可以包含多个线程,由于进程中的多个线程可以共享进程中的资源,所以使同一进程中的多个线程之间通信相对比较简单. 当需要有多个线程来访问一个全局变量时,通常我们会在这个全局变量前 ...

  2. Linux下TCP网络编程与基于Windows下C#socket编程间通信

    一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...

  3. windows下用c实现Socket通信

    原文:windows下用c实现Socket通信 原本以为c是跨平台,所以,c在windows下和linux下的程序应该是类似于Java,什么都不用改变的,今儿才恍然大悟,他们的类库不一样啊-- 下面我 ...

  4. windows下进程间通信与线程间通信

    进程间通信: 1.文件映射(Memory-Mapped Files) 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/ ...

  5. qt在windows下的udp通信(最简单)

    qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发 ...

  6. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  7. 一个简单的Windows下的socket程序

    服务器端代码server.cpp: #include <stdio.h> #include <WinSock2.h> #pragma comment(lib,"ws2 ...

  8. windows下端口映射(端口转发)

    windows下端口映射(端口转发) 转载: https://blog.csdn.net/i1j2k3/article/details/70228043 本文是对网文的归纳整理,算不上原创,摸索过程亲 ...

  9. 局域网内使用ipv6 通信

    链路本地地址:用于网段内通信,不能跨路由访问 在ping本地链路地址和全球唯一地址时有点差别,链路本地地址需要加上网络接口号 Linux 查看ipv6链路本地地址:ifconfig linux系统pi ...

  10. Windows下多线程编程(一)

    前言 熟练掌握Windows下的多线程编程,能够让我们编写出更规范多线程代码,避免不要的异常.Windows下的多线程编程非常复杂,但是了解一些常用的特性,已经能够满足我们普通多线程对性能及其他要求. ...

随机推荐

  1. 重新整理.net core 计1400篇[九] (.net core 中的依赖注入的服务注入)

    前言 在该系列六中介绍了一个简单的依赖注入,该节介绍.net core 中的依赖注入的服务注入. ServiceDescriptor ServiceDescriptor 是服务描述的意思,这个是做什么 ...

  2. Vue3开源组件库

    最近收到的很多问题都是关于Vue3组件库的问题 今天就给大家推荐几个基于Vue3重构的开源组件库 目前状态都处于Beta阶段,建议大家抱着学习的心态入场,勿急于用到生产环境 Ant-design-vu ...

  3. 力扣504(java)-七进制数(简单)

    题目: 给定一个整数 num,将其转化为 7 进制,并以字符串形式输出. 示例 1: 输入: num = 100输出: "202"示例 2: 输入: num = -7输出: &qu ...

  4. 实时化或成必然趋势?新一代 Serverless 实时计算引擎

    作者:高旸(吾与),阿里巴巴高级产品专家 本文由阿里巴巴高级产品专家高旸(吾与)分享,主要介绍新一代Serverless实时计算引擎的产品特性及核心功能. 一.实时计算 Flink 版 – 产品定位与 ...

  5. [FAQ] Win10 键盘输入的数字英文字体变宽, 胖英文, 如何处理

    输入法 点击右键,找到设置,点击进入. 开启 "全/半角切换" 快捷键为 "Shift + 空格",随后可以使用这个快捷键进行切换正常. Link:https: ...

  6. WPF 通过 WindowsAppSDK 使用 WinRT 的手写识别功能

    本文告诉大家如何在基于 .NET 6 的 WPF 使用 WinRT 的手写识别功能 在开始之前需要先创建 WPF 项目,创建完成之后,可替换 csproj 项目文件为以下代码,用来安装初始化环境 &l ...

  7. MAUI 自定义绘图入门

    在2022的5月份,某软正式发布了 MAUI 跨平台 UI 框架.我本来想着趁六一儿童节放假来写几篇关于 MAUI 入门的博客,可惜发现我不擅长写很入门的博客.再加上 MAUI 似乎是为了赶发布日期而 ...

  8. Mybatis学习四(分页助手pagehelper)

    Mybatis学习过程中有一个很重要的插件分页助手(pagehelper) 能够运用这个插件也非常简单 1.导入jar包 [jsqlparser-2.0.jar包] [点击下载https://gith ...

  9. java代码审计跨站脚本(XSS)--反射型

    一.基础:跨站脚本(Xss) 一.原理: 恶意攻击者往web页面里插入恶意js代码,而在服务端没有对数据进行严格的过滤.当用户浏览页面时,js代码必须在该html页面中(hrml必须要存在这个而已艾玛 ...

  10. ruby执行周期性任务 whenever

    ruby执行周期性任务 下面看看怎么将任务写入cron服务. $ whenever #不带参数的whenever会显示转换程cron任务的代码,不写入cron任务表 $ whenever -w #写入 ...