sockaddr在那个头文件里?

jilei82 2004-09-22 11:33:00
本人初学linux网络编程。很多东西不知道。
...全文
1819 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanghuajia 2004-09-24
  • 打赏
  • 举报
回复
sockaddr is at linux/socket.h
^_^
yanedanny 2004-09-24
  • 打赏
  • 举报
回复
if(connect(sockfd,(sockaddr *)&servaddr,sizeof(servaddr))<0)中(sockaddr *)的改为(sockaddr_in *)。
你太粗心了。
jilei82 2004-09-23
  • 打赏
  • 举报
回复
试了还是不行。
代码如下:
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#include <stdio.h>
#define MAXLINE 2096
int main(int argc,char **argv)
{
int sockfd,n;
char recvline[MAXLINE+1];
struct sockaddr_in servaddr;

if(argc!=2)
err_sys("usage:filename<ip address>");

if(sockfd=sock(AF_INET,SOCK_STREAM,0)<0);
err_sys("sock call error\n");

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(13);

if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<0)
err_quit("inet_pton call error for %s\n",argv[1]);

if(connect(sockfd,(sockaddr *)&servaddr,sizeof(servaddr))<0)
err_sys("connect error\n");

while((n=read(sockfd,recvline,MAXLINE))>0)
{
recvline[n]=0;
if(fputs(recvline,stdout)==EOF)
err_sys("fputs error\n");
}
exit(0);
}

哪位大侠看看问题在哪里。
yanedanny 2004-09-23
  • 打赏
  • 举报
回复
#include <sys/socket.h>前应该include <sys/types.h>。试试!
jilei82 2004-09-23
  • 打赏
  • 举报
回复
我用了
#include <sys/socket.h>
if(connect(sockfd,(sockaddr *)&servaddr,sizeof(servaddr))<0)
err_sys("connect error\n");

编译的时候总说:sockaddr 没有定义。
lynux 2004-09-23
  • 打赏
  • 举报
回复
man socket
lijiangshui 2004-09-22
  • 打赏
  • 举报
回复
<sys/socket.h>

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧