ipv6实现udp编程示例

开发测试环境:WIN7SP1、VS2005

UdpServer.cpp


代码如下:

#include <iostream>
#include <WinSock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

int main(int argc, char** argv)
{
 using namespace std;

cout<<"Server Start..."<<endl;

WORD wVersion = 0;
 WSADATA wsaData;
 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;
 }

struct addrinfo hints;
 struct addrinfo* 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;
 }

SOCKET sk = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
 bind(sk, res->ai_addr, res->ai_addrlen);

char recvBuf[1024] = {'\0'};
 int lenRecv = 0;

struct sockaddr_storage storage;
 int len = sizeof(storage);
 memset(&storage, 0, len);

lenRecv = recvfrom(sk, recvBuf, 1024, 0, (struct sockaddr*)&storage, &len);
 cout<<"Recv From Client:"<<recvBuf<<" Len:"<<lenRecv<<endl;
 sendto(sk, recvBuf, lenRecv, 0, (struct sockaddr*)&storage, len);

WSACleanup();
 closesocket(sk);

return 0;
}

UdpClient.cpp


代码如下:

#include <iostream>
#include <WinSock2.h>
#include <ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

int main(int argc, char** argv)
{
 using namespace std;

cout<<"Client Start..."<<endl;

WORD wVersion = 0;
 WSADATA wsaData;
 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;
 }

struct addrinfo hints;
 struct addrinfo* 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;
 }

SOCKET sk = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
 bind(sk, res->ai_addr, res->ai_addrlen);

char recvBuf[1024] = {'\0'};
 char sendBuf[1024] = {"abcd"};
 int len = res->ai_addrlen;
 int lenRecv = 0;

sendto(sk, sendBuf, strlen(sendBuf), 0, res->ai_addr, len);
 lenRecv = recvfrom(sk, recvBuf, 1024, 0, res->ai_addr, &(len));
 cout<<"Recv From Server:"<<recvBuf<<" Len:"<<lenRecv<<endl;

WSACleanup();
 closesocket(sk);

return 0;
}

(0)

相关推荐

  • ipv6实现udp编程示例

    开发测试环境:WIN7SP1.VS2005 UdpServer.cpp 复制代码 代码如下: #include <iostream>#include <WinSock2.h>#include <ws2tcpip.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char** argv){ using namespace std; cout<<"Server Star

  • ipv6实现tcp编程示例

    开发测试环境:WIN7SP. VS2005 TcpServer.cpp 复制代码 代码如下: #include <iostream>#include <WinSock2.h>#include <ws2tcpip.h> #pragma comment(lib, "ws2_32.lib") int main(int argc, char** argv){ using namespace std; cout<<"Server Star

  • 详解python UDP 编程

    前面我们讲了 TCP 编程,我们知道 TCP 可以建立可靠连接,并且通信双方都可以以流的形式发送数据.本文我们再来介绍另一个常用的协议–UDP.相对TCP,UDP则是面向无连接的协议. UDP 协议 我们来看 UDP 的定义: UDP 协议(User Datagram Protocol),中文名是用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务. 从这个定义中,我们可以总结

  • 浅谈java的TCP和UDP编程(附实例讲解)

    TCP 客户端: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class MyClient { public static void main(String[] args) throws Exception{ Socket socket = null; BufferedReader in = n

  • Java模拟UDP通信示例代码

    Java基础:模拟UDP通信 1.一次发送,一次接收 1.1.发送方 // 发送端,不需要连接服务器 public class UdpClientDemo {     public static void main(String[] args) throws Exception {         // 1. 发送数据包需要一个Socket         DatagramSocket socket = new DatagramSocket();         // 1.2 建立一个包    

  • C语言如何与ARM汇编语言混合编程示例详解

    目录 一.ARM汇编语言简介 二.C语言调用汇编语言 1.无参数调用 2.有参数调用 三.汇编语言调用C语言 四.总结 五.参考文献 主要使用软件:keiL μVision5 一.ARM汇编语言简介 什么是汇编语言?汇编语言是任何一种适用于电子计算机.微处理器或其他可编程器件的低级语言.虽然被称为"低级语言",但是并不是说汇编语言真的"低级".特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植.汇编语言主要包括传送指令.逻辑运算.移位指令.位

  • Java9新特性Module模块化编程示例演绎

    目录 一.什么是Javamodule? 二.模块导出package 三.模块导入package 四.Javamodule的意义 五.实例 第一个模块 第二个模块 尝试使用未被exports的package代码 我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 写成一系列的文章,大概十篇左右,本文是第8篇. 在Java 9版本中Java 语言引入了一

  • Android界面一键变灰开发深色适配模式编程示例

    目录 深色主题工具类 background_color公用背景色 values/colors.xml 的代码 values-night/colors.xml 的代码 Android 界面一键变灰 java kotlin 深色主题工具类 package com.example.kotlindemo.utils import android.content.Context import android.content.res.Configuration import androidx.appcomp

  • TypeScript 内置高级类型编程示例

    目录 TypeScript 类型编程 TypeScript 内置高级类型 Pick<Type, Keys> Exclude<UnionType, ExcludedMembers> ReturnType<Type> 更多类型体操学习 TypeScript 类型编程 TypeScript 的类型系统,最基本的是简单对应 JavaScript 的 基本类型,比如 string.number.boolean 等,然后是新增的 tuple.enum.复合类型.交叉类型.索引类型等

  • Android基于TCP和URL协议的网络编程示例【附demo源码下载】

    本文实例讲述了Android基于TCP和URL协议的网络编程.分享给大家供大家参考,具体如下: 手机本身是作为手机终端使用的,因此它的计算能力,存储能力都是有限的.它的主要优势是携带方便,可以随时打开,而且手机通常总是处于联网状态.因此网络支持对于手机应用非常重要. Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建立基于UD

随机推荐