红联Linux门户
Linux帮助

网络客户端连接不上

发布时间:2008-08-29 16:04:39来源:红联作者:juzixiangchang
客户端程序如下,运行到connect就失败退出,是什么原因呢?
其中gethostbyname()的参数用的是本地主机名,有影响吗?

#include
#include
#include
#include
#include
#include
#include
#include
#include

#define PORT 3490 //the port client will be connecting to
#define MAXDATASIZE 100 //max number of bytes we can get at once

int main(int argc, char **argv)
{
int sockfd,numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in their_addr; //connector's address information

if(argc!=2)
{
fprintf(stderr,"usage:client hostname\n");
exit(1);
}

if((he=gethostbyname(argv[1]))==NULL)
{
perror("gethostbyname fail\n");
exit(1);
}
printf("gethostbyname success!\n");

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket fail\n");
exit(1);
}
printf("socket success!\n");

their_addr.sin_family=AF_INET;
their_addr.sin_port=htons(PORT);
their_addr.sin_addr=*((struct in_addr *)he->h_addr);
memset(&(their_addr.sin_zero),'\0',8);

if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr))==-1)
{
perror("connect fail\n");
exit(1);
}
printf("connect success!\n");

if((numbytes=recv(sockfd,buf,MAXDATASIZE-1,0)==-1))
{
perror("recv");
exit(1);
}

buf[numbytes]='\0';
printf("Received:%s",buf);
close(sockfd);
return 0;
}
文章评论

共有 1 条评论

  1. juzixiangchang 于 2008-09-01 12:58:58发表:

    该段代码没有错误,我没有运行服务器程序:0lopw(1