getsockname
发布日期:2021-05-07 02:41:58 浏览次数:19 分类:精选文章

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

函数原型

#include
int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen);调用成功,则返回0,如果调用出错,则返回-1
/*客户端*/#define PORT 6563#include 
#include
#include
#include
#include
#include
int main(int argc, char **argv){ struct sockaddr_in servaddr; //服务器端地址 struct sockaddr_in clientAddr; //客户端地址 int sockfd; socklen_t clientAddrLen = sizeof(clientAddr); char ipAddress[INET_ADDRSTRLEN]; //保存点分十进制的ip地址 if (argc < 2) { printf("parameter error\n"); printf("Example: ./client 127.0.0.1"); return 0; } sockfd = socket(AF_INET, SOCK_STREAM, 0); memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) { printf("server address error\n"); //地址参数不合法 } connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); //向服务器端发起连接请求 getsockname(sockfd, (struct sockaddr *)&clientAddr, &clientAddrLen); //获取sockfd表示的连接上的本地地址 printf("client:client ddress = %s:%d\n", inet_ntop(AF_INET, &clientAddr.sin_addr, ipAddress, sizeof(ipAddress)), ntohs(clientAddr.sin_port)); return 0;}
/*客户端*/#define PORT 6563#include 
#include
#include
#include
#include
#include
int main(int argc, char **argv){ struct sockaddr_in servaddr; //服务器端地址 struct sockaddr_in clientAddr; //客户端地址 int sockfd; socklen_t clientAddrLen = sizeof(clientAddr); char ipAddress[INET_ADDRSTRLEN]; //保存点分十进制的ip地址 if (argc < 2) { printf("parameter error"); return 0; } sockfd = socket(AF_INET, SOCK_STREAM, 0); memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) { printf("server address error\n"); //地址参数不合法 } connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); //向服务器端发起连接请求 getsockname(sockfd, (struct sockaddr *)&clientAddr, &clientAddrLen); //获取sockfd表示的连接上的本地地址 printf("client:client ddress = %s:%d\n", inet_ntop(AF_INET, &clientAddr.sin_addr, ipAddress, sizeof(ipAddress)), ntohs(clientAddr.sin_port)); return 0;}

服务器

在这里插入图片描述客户端
在这里插入图片描述

上一篇:Linux网络函数
下一篇:排序算法

发表评论

最新留言

很好
[***.229.124.182]2025年03月23日 16时53分51秒