LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 634|回复: 1

create a unix socket 出现乱码??

[复制链接]
发表于 2004-5-12 22:13:01 | 显示全部楼层 |阅读模式
  1. #include "unp.h"
  2. int
  3. main(int argc,char **argv)
  4. {
  5.         int                     sockfd;
  6.         socklen_t               len;
  7.         struct sockaddr_un      addr1,addr2;
  8.         if(argc != 2) {
  9.                 printf("Usage :unixbind <pathname> \n");
  10.                 exit(1);
  11.         }
  12.         if((sockfd=socket(AF_LOCAL,SOCK_STREAM,0)) <0) {
  13.                 perror("create unix socket error\n");
  14.                 exit(1);
  15.         }
  16.         unlink(argv[1]);        /* OK if this fails */
  17.         bzero(&addr1,sizeof(addr1));
  18.         addr1.sun_family=AF_LOCAL;
  19.         strncpy(addr1.sun_path,argv[1],sizeof(addr1.sun_path)-1) ;
  20.         if( bind(sockfd,(SA *)&addr1,SUN_LEN(&addr1)) < 0 ) {
  21.                 perror("bind error\n");
  22.                 exit(1);
  23.         }
  24.         len=sizeof(addr2);
  25.         if(getsockname(sockfd,(SA *)&addr2,&len) != 0) {
  26.                 perror("getsockname error");
  27.                 exit(1);
  28.         }
  29.         printf("bound name=%s,returned len=%d\n",addr2.sun_path,len);
  30.         exit(0);
  31. }
复制代码
socket name 是乱码? 为什么?我用了全名或普通名字都是这样?
:confused: 帮忙呀。。
发表于 2004-5-23 10:22:37 | 显示全部楼层
修改一下楼主的程序,这样也不可以。why ?
  1.         printf("bound name=%s,returned len=%d\n",
  2.                 inet_ntop(AF_LOCAL,&addr2.sun_path,buff,sizeof(buff)),len);
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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