函数如下
运行时出现argv[1]: Connection timed out
发现指针hp赋值那出的问题( hp=gethostbyname(argv[1]); )?这是怎么回事呢?
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/types.h>
# include <sys/socket.h>
# include <sys/select.h>
# include <sys/time.h>
# include <netinet/in.h>
# include <netdb.h>
# include <string.h>
# define PORT 13000
# define oops(m) {perror(m);exit(1);}
int max(int,int);
int main(int argc,char **argv)
{
struct sockaddr_in servaddr;
int sockfd;
struct hostent *hp;
void str_cli();
/*argv[1] the server's hostname*/
if(argc!=2){
printf("please input the right command\n");
exit(1);
}
sockfd=socket(PF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(servaddr));
hp=gethostbyname(argv[1]);
if(hp==NULL)
oops("argv[1]");
bcopy((void *)hp->h_addr,(void *)&servaddr.sin_addr,hp->h_length);
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(PORT);
connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
str_cli(stdin,sockfd);
return 0;
}
void str_cli(FILE *fp,int sockfd)
{
char sendbuf[BUFSIZ],recvbuf[BUFSIZ];
int maxfd1,stadineof;
fd_set readset;
while(1){
if(fgets(sendbuf,BUFSIZ,fp)!=NULL){
bzero(&recvbuf,sizeof(recvbuf));printf("**********\n");
write(sockfd,sendbuf,strlen(sendbuf));
}
else{
shutdown(sockfd,SHUT_WR);
continue;
}
if(read(sockfd,recvbuf,BUFSIZ)>0)
fputs(recvbuf,stdout);
else
printf("client read failure\n");
}
}
[问题]关于socket的一个客户端小程序
-
- 帖子: 26
- 注册时间: 2008-03-18 13:23
- aitilang
- 帖子: 1026
- 注册时间: 2007-04-28 21:38