当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]关于socket的一个客户端小程序
帖子发表于 : 2008-09-20 22:12 

注册: 2008-03-18 13:23
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
函数如下
运行时出现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");

}
}


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-09-21 0:56 
头像

注册: 2007-04-28 21:38
帖子: 1026
送出感谢: 0 次
接收感谢: 0 次
argv[1]是什么?


_________________
thinkpad x61 2G DDR no cdrom
--------------------------------------------
ABS学习中
sed学习中
awk学习中
perl学习中
新手描述不清,老手猜测不到,胡乱指挥一通,后果难以预料


页首
 用户资料  
 
3 楼 
 文章标题 : Re:
帖子发表于 : 2008-09-23 13:59 

注册: 2008-03-18 13:23
帖子: 26
送出感谢: 0 次
接收感谢: 0 次
aitilang 写道:
argv[1]是什么?

the server's hostname


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Google [Bot] 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译