ipv6实现udp编程示例
开发测试环境:WIN7SP1、VS2005
UdpServer.cpp
#include<iostream>
#include<WinSock2.h>
#include<ws2tcpip.h>
#pragmacomment(lib,"ws2_32.lib")
intmain(intargc,char**argv)
{
usingnamespacestd;
cout<<"ServerStart..."<<endl;
WORDwVersion=0;
WSADATAwsaData;
memset(&wsaData,0,sizeof(wsaData));
wVersion=MAKEWORD(2,2);
if(0!=WSAStartup(wVersion,&wsaData))
{
return-1;
}
if(2!=LOBYTE(wsaData.wVersion)||2!=HIBYTE(wsaData.wVersion))
{
WSACleanup();
return-1;
}
structaddrinfohints;
structaddrinfo*res=NULL;
memset(&hints,0,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_DGRAM;
hints.ai_protocol=IPPROTO_UDP;
hints.ai_flags=AI_PASSIVE;
if(0!=getaddrinfo("192.168.0.19","6677",&hints,&res))
{
WSACleanup();
return-1;
}
SOCKETsk=socket(res->ai_family,res->ai_socktype,res->ai_protocol);
bind(sk,res->ai_addr,res->ai_addrlen);
charrecvBuf[1024]={"\0"};
intlenRecv=0;
structsockaddr_storagestorage;
intlen=sizeof(storage);
memset(&storage,0,len);
lenRecv=recvfrom(sk,recvBuf,1024,0,(structsockaddr*)&storage,&len);
cout<<"RecvFromClient:"<<recvBuf<<"Len:"<<lenRecv<<endl;
sendto(sk,recvBuf,lenRecv,0,(structsockaddr*)&storage,len);
WSACleanup();
closesocket(sk);
return0;
}
UdpClient.cpp
#include<iostream>
#include<WinSock2.h>
#include<ws2tcpip.h>
#pragmacomment(lib,"ws2_32.lib")
intmain(intargc,char**argv)
{
usingnamespacestd;
cout<<"ClientStart..."<<endl;
WORDwVersion=0;
WSADATAwsaData;
memset(&wsaData,0,sizeof(wsaData));
wVersion=MAKEWORD(2,2);
if(0!=WSAStartup(wVersion,&wsaData))
{
return-1;
}
if(2!=LOBYTE(wsaData.wVersion)||2!=HIBYTE(wsaData.wVersion))
{
WSACleanup();
return-1;
}
structaddrinfohints;
structaddrinfo*res=NULL;
memset(&hints,0,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_DGRAM;
hints.ai_protocol=IPPROTO_UDP;
hints.ai_flags=AI_CANONNAME;
if(0!=getaddrinfo("192.168.0.19","6677",&hints,&res))
{
WSACleanup();
return-1;
}
SOCKETsk=socket(res->ai_family,res->ai_socktype,res->ai_protocol);
bind(sk,res->ai_addr,res->ai_addrlen);
charrecvBuf[1024]={"\0"};
charsendBuf[1024]={"abcd"};
intlen=res->ai_addrlen;
intlenRecv=0;
sendto(sk,sendBuf,strlen(sendBuf),0,res->ai_addr,len);
lenRecv=recvfrom(sk,recvBuf,1024,0,res->ai_addr,&(len));
cout<<"RecvFromServer:"<<recvBuf<<"Len:"<<lenRecv<<endl;
WSACleanup();
closesocket(sk);
return0;
}
相关文章
- Hadoop——HBase配置、shell编程和api编程
- Python 编程 | 连载 24 - 正则表达式
- 用原子操作实现无锁编程[通俗易懂]
- 多线程编程里如何运用CreateMutex,WaitForSingleObject,ReleaseMutex来实现线程同步
- C-socket编程,实现客户端与服务端通信(服务端)
- Rx Java 异步编程框架
- Shell 编程(七):脚本实战
- ROS2机器人编程简述humble-第三章-BUMP AND GO BEHAVIOR IN PYTHON .4
- 敏捷开发-极限编程(XP)
- 语言模型生成了自然界不存在的蛋白质,图灵奖得主LeCun:蛋白质编程来了
- 【数字信号处理】卷积编程实现 ( 卷积计算原理 | 卷积公式计算 | 使用 matlab 计算卷积 | 使用 C 语言实现卷积计算 )
- 浅谈TCP/IP网络编程中socket的行为详解程序员
- C/C++在Java、Android和Objective-C三大平台下实现混合编程详解编程语言
- Spark编程实战之模拟SparkRPC原理实现自定义RPC详解大数据
- 实现Linux下实现多进程编程的进程池(linux进程池)
- Linux C编程实现数据库系统(linuxc数据库编程)
- Linux C编程实现NTP时间同步(linuxcntp)
- 开发Linux下Python编程:实现自己的开发梦想(linux下python)
- Linux下的高性能网络编程实践(linux高性能网络编程)
- Linux C编程实现网络通信(linuxc通信)
- Linux下多线程服务端开发实践(Linux多线程服务端编程)
- Linux静态链接库:深入理解编程实现(linux静态链接库)
- Linux实现图形界面编程入门(linux编写图形界面)
- 多线程利用Linux实现多进程多线程编程;(linux多进程)
- 使用C编程实现Oracle连接串(oracle连接串c)
- Linux编程全攻略:一站式学习指南(linux一站式编程)
- Java与MySQL编程实现数据查询、存储、更新与删除!(javamysql编程)
- 学习SQL Server基础知识,入门数据库编程。(学sqlserver)
- 实现MSSQL函数式编程(mssql定义函数)
- 探索 Linux C 编程中的结构体实现(linuxc结构体)
- MySQL数据库编程技术精通法(mysql 数据库编程)
- 取MySQL存储引擎C语言编程实现数据读取(c mysql读)
- Oracle中妙用保留字实现高效编程(oracle 使用保留字)
- Oracle伪例数据库最佳实践之编程实现(oracle 伪例)
- Oracle C编程快速实现本地连接(oracle c本地连接)
- 从零学python系列之数据处理编程实例(一)