c/c++ 网络编程 使用getaddrinfo的单纯UDP 通信
网络编程 使用getaddrinfo的单纯UDP
1,UDP发送端
2,UDP接收端
UDP发送端:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <netdb.h>//getaddrinfo
int main(int argc, char* argv[]){
  int sock;
  addrinfo hints, *res;
  int err;
  int n;
  printf("argv[1]: %s\n", argv[1]);
  if(argc !=2)return 1;
  //IP地址和网站都可以识别
  memset(&hints, 0, sizeof(hints));
  hints.ai_family = AF_UNSPEC;///IP地址和网站都可以识别
  hints.ai_socktype = SOCK_DGRAM;
  err = getaddrinfo(argv[1], "12345", &hints, &res);
  if(err != 0){
    printf("getaddrinfo: %s\n", gai_strerror(err));
  }
  sock = socket(res->ai_family, res->ai_socktype, 0);
  if(sock < 0){
    perror("socket");
    return 1;
  }
  {
    const char* ipver;
    switch(res->ai_family){
    case AF_INET:
      ipver = "IPv4";
    case AF_INET6:
      ipver = "IPv6";
    default:
      ipver = "unknown";
    }
    printf("%s\n", ipver);
  }
  n = sendto(sock, "bbbb\n", 5, 0, res->ai_addr, res->ai_addrlen);
  if(n < 0){
    perror("sendto");
    return 1;
  }
  close(sock);
  freeaddrinfo(res);
  return 0;
}
发送端的执行方式:
./a.out 127.0.0.1
UDP接收端
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <netdb.h>
int main(){
  int sock;
  addrinfo hints, *res;
  int err,n;
  char buf[2048];
  memset(&hints, 0, sizeof(hints));
  hints.ai_family = AF_INET;
  hints.ai_socktype = SOCK_DGRAM;
  hints.ai_flags = AI_PASSIVE;
  err = getaddrinfo(NULL,"12345", &hints, &res);
  if(err != 0){
    printf("getaddrinfo:%s\n", gai_strerror(err));
    return 1;
  }
  sock = socket(res->ai_family, res->ai_socktype, 0);
  if(sock < 0){
    perror("socket");
    return 1;
  }
  if(bind(sock, res->ai_addr, res->ai_addrlen) != 0){
    perror("bind");
    return 1;
  }
  freeaddrinfo(res);
  memset(buf, 0, sizeof(buf));
  n = recv(sock, buf, sizeof(buf), 0);
  if(n < 0){
    printf("recv failure\n");
  }
  printf("%s\n", buf);
  close(sock);
  return 0;
}
c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854
c/c++ 网络编程 使用getaddrinfo的单纯UDP 通信的更多相关文章
- 网络编程 单纯UDP通信
		
网络编程 单纯UDP通信 1,UDP发送端 2,UDP接收端 UDP发送端: #include <stdio.h> #include <unistd.h> #include & ...
 - c++ 网络编程(一)TCP/UDP  windows/linux 下入门级socket通信 客户端与服务端交互代码
		
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
 - Fixed-Length Frames 谈谈网络编程中应用层(基于TCP/UDP)的协议设计
		
http://blog.sina.com.cn/s/blog_48d4cf2d0101859x.html 谈谈网络编程中应用层(基于TCP/UDP)的协议设计 (2013-04-27 19:11:00 ...
 - Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型
		
Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...
 - [C# 网络编程系列]专题六:UDP编程
		
转自:http://www.cnblogs.com/zhili/archive/2012/09/01/2659167.html 引用: 前一个专题简单介绍了TCP编程的一些知识,UDP与TCP地位相当 ...
 - 网络编程之基于tcp和udp的套接字
		
一 udp协议网络编程 DNS:将域名解析成ip地址 SOCK_DGRAM:数据报协议,也是udp协议 udp协议的网络编程的一些用法: recvfrom:接收消息,接收的时一个元组,元组里面的元 ...
 - 网络编程、三要素、Socket通信、UDP传输、TCP协议、服务端(二十五)
		
1.网络编程概述 * A:计算机网络 * 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传 ...
 - 网络编程模型及TCP、UDP编程设计
		
1.Linux网络模型 Linux网络编程--->>>socket套接字的编程 2.TCP网络模型 ...
 - python网络编程(Socket、TCP、UDP)
		
Socket 是网络编程的一个抽象概念,通常我们用一个Socket表示 "打开了一个网络链接",而打开一个Socket 需要知道目标计算机的IP 地址和端口号,再指定协议类型即可. ...
 
随机推荐
- 洛谷P2089烤鸡
			
题目链接:https://www.luogu.org/problemnew/show/P2089 题目详情: 题目背景 猪猪hanke得到了一只鸡 题目描述 猪猪Hanke特别喜欢吃烤鸡(本是同畜牲, ...
 - iOS学习—— UISearchBar的使用
			
转载自:http://blog.sina.com.cn/s/blog_7b9d64af0101dfg8.html 最近用到搜索功能.于是,经过不断的研究,终于,有点懂了. 那就来总结一下吧,好记性不如 ...
 - qt delete
			
在写博文之前,先推荐一篇文章,我觉着挺不错,也是qt中delete相关:QT父子与QT对象delete 学习C++的童鞋都知道new和delete必须是同时出现的,否则就会导致内存泄露 ...
 - Entitiy Framework Core中使用ChangeTracker持久化实体修改历史
			
背景介绍 在我们的日常开发中,有时候需要记录数据库表中值的变化, 这时候我们通常会使用触发器或者使用关系型数据库中临时表(Temporal Table)或数据变更捕获(Change Data Capt ...
 - Mac电脑C语言开发的入门帖
			
本文是写给Mac电脑开发新手的入门帖,诸神请退散. C语言 C语言可说是电脑环境中的"镇国神器",从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够 ...
 - uabntu18.04 安装mysql5.7
			
原以为安装mysql就是一键的事情,结果还弄了有一阵子... 首先需要安装mysql的服务器.客户端和依赖, sudo apt-get install mysql-serversudo apt ins ...
 - Kubernetes系列02—Kubernetes设计架构和设计理念
			
本文收录在容器技术学习系列文章总目录 1.Kubernetes设计架构 Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分 ...
 - Lily_music 网页音乐播放器 -可搜索(附歌词联动播放效果解说)
			
博客地址:https://ainyi.com/59 写在前面 这是我今年(2018)年初的小项目,当时也是手贱,不想用别的播放器,想着做一个自己的网页播放器,有个歌曲列表.可关键词搜索.歌词滚动播放的 ...
 - 【.NET Core项目实战-统一认证平台】第十四章 授权篇-自定义授权方式
			
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我介绍了如何强制令牌过期的实现,相信大家对IdentityServer4的验证流程有了更深的了解,本篇我将介绍如何使用自定义的授权方 ...
 - 第45章 工具 - Identity Server 4 中文文档(v1.0.0)
			
该IdentityServerTools是为IdentityServer编写扩展代码时,你可能需要有效的内部工具的集合.要使用它,请将其注入代码,例如控制器: public MyController( ...