QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1763|回复: 2

请教getsockname()的用法

[复制链接]
发表于 2006-4-24 14:49:26 | 显示全部楼层 |阅读模式
源程序guest.c


#include  <unistd.h>
#include  <sys/socket.h>
#include  <arpa/inet.h>
#include  <netinet/in.h>



int  main(int  argc, char  *argv[])
{
    int                        sockfd;
    struct sockaddr_in  seraddr;
    struct sockaddr_in  localaddr;
    socklen_t                locallen;
    char                ip[1024];

    sockfd = socket(AF_INET, SOCK_STREAM, 0);

    bzero(&seraddr, 0);
    bzero(&localaddr, 0);

    seraddr.sin_family = AF_INET;
    seraddr.sin_port = htons(4000);
    inet_pton(AF_INET,
              argv[1],
              &seraddr.sin_addr);

    connect(sockfd,
           (struct sockaddr *)&seraddr,
           sizeof(seraddr));

    locallen = sizeof(localaddr);

    getsockname(sockfd,
                    (struct sockaddr *)&localaddr,
                &locallen);            

    printf("local ip : %s\n"
           "local port: %d\n",
           inet_ntop(AF_INET, (struct sockaddr *)&localaddr, ip, sizeof(ip)),
           ntohs(localaddr.sin_port));
                                                
    close(sockfd);

    exit(0);
}



程序输出的结果不正确啊, 如果写一个服务器程序,调用getpeername能够等到客户端的ip地址和端口,但调用getsockname同样结果不正确
是不是我的getsockname用法错了!
 楼主| 发表于 2006-4-24 14:51:12 | 显示全部楼层
为什么我的代码没有缩进呢?
回复

使用道具 举报

发表于 2006-4-24 16:59:06 | 显示全部楼层
用code功能
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 18:33 , Processed in 0.039323 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表