网络客户端连接不上

网络客户端连接不上

客户端程序如下,运行到connect就失败退出,是什么原因呢?
其中gethostbyname()的参数用的是本地主机名,有影响吗?

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#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;
}
该段代码没有错误,我没有运行服务器程序