其中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;
}
juzixiangchang 于 2008-09-01 12:58:58发表:
该段代码没有错误,我没有运行服务器程序:0lopw(1