博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNIX网络编程卷1 时间获取程序client UDP 协议无关
阅读量:6272 次
发布时间:2019-06-22

本文共 1893 字,大约阅读时间需要 6 分钟。

本文为senlie原创。转载请保留此地址:
/*** UDP。协议无关,调用 getaddrinfo 和 udp_client**/#include	"unp.h"intudp_client(const char *host, const char *serv, SA **saptr, socklen_t *lenp){	int				sockfd, n;	struct addrinfo	hints, *res, *ressave;	//1.调用 getaddrinfo	//协议地址族为 AF_UNSPEC ,套接字类型为 SOCK_DGRAM	bzero(&hints, sizeof(struct addrinfo));	hints.ai_family = AF_UNSPEC;	hints.ai_socktype = SOCK_DGRAM;	if ( (n = getaddrinfo(host, serv, &hints, &res)) != 0)		err_quit("udp_client error for %s, %s: %s",				 host, serv, gai_strerror(n));	ressave = res;	//2.尝试每一个 addrinfo 结构直到成功或到达链表尾	do {	    // 创建套接字		sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);		if (sockfd >= 0)			break;		/* success */	} while ( (res = res->ai_next) != NULL);	//3.假设 getaddrinfo 失败或创建套接字不成功。本函数将终止	if (res == NULL)	/* errno set from final socket() */		err_sys("udp_client error for %s, %s", host, serv);	//4.保存server套接字地址结构		*saptr = Malloc(res->ai_addrlen);	memcpy(*saptr, res->ai_addr, res->ai_addrlen);	*lenp = res->ai_addrlen;	//5.调用 freeaddrinfo 清理由 getaddrinfo 返回的动态存储空间	freeaddrinfo(ressave);	//6.返回套接字	return(sockfd);}/* end udp_client */intUdp_client(const char *host, const char *serv, SA **saptr, socklen_t *lenptr){	return(udp_client(host, serv, saptr, lenptr));}
/*** UDP,协议无关。调用 getaddrinfo 和 udp_client**/#include	"unp.h"intmain(int argc, char **argv){	int				sockfd, n;	char			recvline[MAXLINE + 1];	socklen_t		salen;	struct sockaddr	*sa;	if (argc != 3)		err_quit("usage: daytimeudpcli1 
"); //1.利用 Udp_client 获得 UDP 套接字和server套接字地址结构 sockfd = Udp_client(argv[1], argv[2], (void **) &sa, &salen); //2.显示server地址 printf("sending to %s\n", Sock_ntop_host(sa, salen)); //3.发送1字节的数据报 Sendto(sockfd, "", 1, 0, sa, salen); /* send 1-byte datagram */ //4.读取并显示应答数据报 n = Recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL); recvline[n] = '\0'; /* null terminate */ Fputs(recvline, stdout); exit(0);}
你可能感兴趣的文章
磁盘空间满引起的mysql启动失败:ERROR! MySQL server PID file could not be found!
查看>>
点播转码相关常见问题及排查方式
查看>>
[arm驱动]linux设备地址映射到用户空间
查看>>
弗洛伊德算法
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
精度 Precision
查看>>
Android——4.2 - 3G移植之路之 APN (五)
查看>>
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>