windows下IPv6通信(C++、MFC)
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)的更多相关文章
- 转:windows下多线程通信方法
多线程知识简介 同一进程中可以包含多个线程,由于进程中的多个线程可以共享进程中的资源,所以使同一进程中的多个线程之间通信相对比较简单. 当需要有多个线程来访问一个全局变量时,通常我们会在这个全局变量前 ...
- Linux下TCP网络编程与基于Windows下C#socket编程间通信
一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...
- windows下用c实现Socket通信
原文:windows下用c实现Socket通信 原本以为c是跨平台,所以,c在windows下和linux下的程序应该是类似于Java,什么都不用改变的,今儿才恍然大悟,他们的类库不一样啊-- 下面我 ...
- windows下进程间通信与线程间通信
进程间通信: 1.文件映射(Memory-Mapped Files) 文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待.因此,进程不必使用文件I/ ...
- qt在windows下的udp通信(最简单)
qt编程:windows下的udp通信 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:win7 开发环境:qt 功能: 用udp进行收发 ...
- (8)Linux(客户端)和Windows(服务端)下socket通信实例
Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows Client端 #include <st ...
- 一个简单的Windows下的socket程序
服务器端代码server.cpp: #include <stdio.h> #include <WinSock2.h> #pragma comment(lib,"ws2 ...
- windows下端口映射(端口转发)
windows下端口映射(端口转发) 转载: https://blog.csdn.net/i1j2k3/article/details/70228043 本文是对网文的归纳整理,算不上原创,摸索过程亲 ...
- 局域网内使用ipv6 通信
链路本地地址:用于网段内通信,不能跨路由访问 在ping本地链路地址和全球唯一地址时有点差别,链路本地地址需要加上网络接口号 Linux 查看ipv6链路本地地址:ifconfig linux系统pi ...
- Windows下多线程编程(一)
前言 熟练掌握Windows下的多线程编程,能够让我们编写出更规范多线程代码,避免不要的异常.Windows下的多线程编程非常复杂,但是了解一些常用的特性,已经能够满足我们普通多线程对性能及其他要求. ...
随机推荐
- 粗心的小红qsnctfwp
将原 apk 安装包后缀名修改为 zip 将其中的 classes3.dex 文件解压 使用 Notepad++ 或其他工具打开 classes3.dex,将第 2 行的 38 修改为 35 或 36 ...
- jenkins 持续集成和交付——安装与账户安全还有凭证(二)
前言 jenkins 整理完毕,共二十四章,逐步放出,互相交流学习.学会jenkins 只是第一步,真正的还是多写脚本,然后遇到构建过程的坑,然后解决. 正文 安装jenkins 首先是如何安装jen ...
- vue3.0 中文文档(暂时)地址
https://v3.cn.vuejs.org/ https://vue-docs-next-zh-cn.netlify.app/guide/installation.html#vue-devtool ...
- JavaScript如何判断一个元素是否在可视区域中?
一.用途 可视区域即我们浏览网页的设备肉眼可见的区域,如下图 在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如: 图片 ...
- API 开发的后盾:平台工程提供强力动态支持
过去几年,开发团队一直在发展传统的 DevOps.一些开发人员认为,CloudOps 或 DeploymentOps 等新实践的兴起将会导致回到孤岛问题.其他人则不愿意在承担所有其他职责之外构建.部署 ...
- 从 2018 年 Nacos 开源说起
2018 年夏天 国内微服务开源 领域,迎来了一位新成员.此后,在构建微服务注册中心和配置中心的过程中,国内开发者多了一个可信赖的选项. Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务 ...
- Elasticsearch生态&技术峰会 | 阿里云Elasticsearch云原生内核
简介: 开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范.值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elas ...
- Serverless 工程实践 | 快速搭建 Kubeless 平台
简介: Kubeless 是基于 Kubernetes 的原生无服务器框架.其允许用户部署少量的代码(函数),而无须担心底层架构. 快速搭建 Kubeless 平台 Kubeless 简介 Kube ...
- DLF +DDI 一站式数据湖构建与分析最佳实践
简介: 本文由阿里云数据湖构建 DLF 团队和 Databricks 数据洞察团队联合撰写,旨在帮助您更深入地了解阿里云数据湖构建(DLF)+Databricks 数据洞察(DDI)构建一站式云上数据 ...
- 在 UOS 统信运行 dotnet 程序提示没有通过系统安全验证无法运行
本文记录 dotnet 应用程序在 UOS 统信系统上运行时,提示 没有通过系统安全验证,无法运行 的问题 这个问题是因为没有开启 UOS 统信的开发者模式,直接将自己构建完成的包放上去跑导致的问题 ...