UNIX网络编程——UDP 中的外出接口的确定
来源:互联网 发布:知乎怎么赚钱的 编辑:程序博客网 时间:2024/06/04 04:10
已连接UDP套接字还可用来确定用于特定目的地的外出接口。这是由connect函数应用到UDP套接字时的一个副作用造成的:内核选择本地IP地址。这个本地IP地址通过为目的IP地址搜索路由表得到外出接口,然后选用该接口的主IP地址而选定。
注意:getsockname函数调用的位置。
#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#define SERV_PORT 3333#define MAXLINE 1024#define ERR_EXIT(m) \ do \ { \ perror(m); \ exit(EXIT_FAILURE); \ } while(0)typedef struct sockaddr SA;int main(int argc, char **argv){intsockfd;socklen_tlen,peer_len;struct sockaddr_incliaddr, servaddr,peer_addr;if (argc != 2)ERR_EXIT("usage: udpcli <IPaddress>");sockfd = socket(AF_INET, SOCK_DGRAM, 0);bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(SERV_PORT);inet_pton(AF_INET, argv[1], &servaddr.sin_addr);connect(sockfd, (SA *) &servaddr, sizeof(servaddr));len = sizeof(cliaddr);getsockname(sockfd, (SA *) &cliaddr, &len);printf("local address %s and port = %d\n", inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));getpeername(sockfd,(SA *) &peer_addr, &peer_len);printf("peer address %s and port = %d\n", inet_ntoa(peer_addr.sin_addr),ntohs(peer_addr.sin_port));exit(0);}
运行结果:
huangcheng@ubuntu:~$ ./cli 192.168.2.103local address 192.168.2.103 and port = 53271peer address 192.168.2.103 and port = 3333
- UNIX网络编程——UDP 中的外出接口的确定
- UNIX网络编程笔记(6)—UDP网络编程
- unix 网络编程--UDP
- UNIX网络编程——UDP编程模型
- UNIX网络编程——基本UDP套接字编程
- Unix网络编程—基本UDP套接字编程
- UNIX网络编程——TCP输出,UDP输出
- Unix网络编程—传输层:TCP和UDP
- unix网络编程之udp
- Unix c 网络编程 UDP
- 《UNIX网络编程》UDP网络编程基础
- UNIX网络编程——基于UDP协议的网络程序
- Unix 网络编程 基础接口
- unix网络编程基础接口
- ios调用unix 网络编程的socket 接口实行UDP通信, 锁屏后解屏会闪退的解决方法
- udp 编码的connect 函数 ——unix 网络编程 第8章
- UNIX网络编程——分析一帧基于UDP的TFTP协议帧
- UNIX网络编程——UDP回射服务器程序(初级版本)以及漏洞分析
- 育儿经(2)
- UVa 156 - Ananagrams
- English
- 堆区和栈区的区别
- Android 判断用户是否第一次运行此程序
- UNIX网络编程——UDP 中的外出接口的确定
- 利用ListView做多级菜单
- English 口语
- fpga控制vga显示彩色图片
- 英语中的日期格式
- android:textAppearence
- 【Python排序搜索基本算法】之快速排序
- 2-路归并排序详解
- A Bug's Life(hdu1829种类并查集)