LinuxSir.cn,穿越时空的Linuxsir!

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

how to write a Connect()

[复制链接]
发表于 2004-4-12 18:58:17 | 显示全部楼层 |阅读模式
  1. #include "unp.h"
  2. void
  3. Connect(int sockfd,(const SA *)&servaddr,socklen_t addrlen)
  4. {
  5.      if(connect(sockfd,(const SA *)&servaddr,addrlen)<0) {
  6.                close(sockfd);
  7.                printf("connect error\n");
  8.                return(1);
  9.      }
  10. }
复制代码
Connect.c:3: syntax error before `('
Connect.c:7: syntax error before string constant
Connect.c:7: warning: data definition has no type or storage class

please me ! how to write a right Connect() funcation ??:help
发表于 2004-4-12 19:35:38 | 显示全部楼层
试试这个

  1. if (connect =(sockfd,(struct sockaddr *)&servaddr, sizeof(sevaddr))<0);
复制代码
 楼主| 发表于 2004-4-12 19:40:30 | 显示全部楼层
it's generic the sock address struct is set to "const sockaddr_in *" ,

set like that :
Connect(int sockfd,const SA * servaddr,socklen_t addrlen)
??
 楼主| 发表于 2004-4-12 19:45:29 | 显示全部楼层
最初由 wuhu 发表
试试这个
  1. if (connect =(sockfd,(struct sockaddr *)&servaddr, sizeof(sevaddr))<0);
复制代码


sorry ,i did not sait to you about the socket type,


The program use the BSD socket ,so the connect() form is :
  1. int connect( int s,
  2.              const struct sockaddr * name,
  3.              size_t namelen );
复制代码
发表于 2004-4-13 19:06:47 | 显示全部楼层
第三个参数表示的是地址结构的长度,所以你可以用sizeof(servaddr);来代替,我写的那个是个包裹函数!
发表于 2004-4-14 09:38:41 | 显示全部楼层
你这个是unp里的,大写的是作者自己修改的包裹函数,里面对一些错误信息进行了处理,不在需要你另外处理了。还有些其他的安全方面也有的修改过了
小写的才是原来的函数
sa是一个定义的常量代替了那一大串东西
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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