红联Linux门户
Linux帮助

很简单的socket编程的问题??急急急!!!在线等!!

发布时间:2010-06-14 09:46:43来源:红联作者:liduli
(unix 网络编程 教材)c/s模式,问题是客户端调用connect()后,总是连接不上服务器。
我是在自己电脑上测试的,先运行服务器的程序,在运行客服端的程序,
服务端的程序运行后,用netstat看到本地端口已打开,listening状态,但是客服端就是连接不上,而且运行客服端后发现客服端才程序根本就没有打开
端口,所以没有连上,程序为什么没有打开端口?内核不是会为程序分配临时端口吗?
红色部分在运行两分钟后,便跳出。
代码:
//time_client.c

#include
#include
//#include
#include
#include
#include
#include
#include
int main(int argc,char* argv[])
{
struct sockaddr_in desaddr;
int n,sockfd,sec;
char buff[100];
bzero(&desaddr,sizeof(desaddr));
desaddr.sin_family=AF_INET;
desaddr.sin_port=htons(3333);
if(sockfd=(socket(AF_INET,SOCK_STREAM,0))==-1)
printf("Creat socket error\n");
// if(inet_pton(AF_INET,argv[1],&desaddr.sin_addr)!=1)
if(inet_aton(argv[1],&desaddr.sin_addr)==0)
printf("ip address transform failed\n");

// printf("%s\n",inet_ntoa(desaddr.sin_addr));
for(sec=1;sec<=128;sec<<=1){
[color=Red][/color] if(connect(sockfd,(struct sockaddr*)(&desaddr),sizeof(desaddr))==0)
break;
sleep(sec);
}
printf("connect to the server\n");
while((n=read(sockfd,buff,100))>0){
buff[n]=0;
if(fputs(buff,stdout)==EOF)
printf("fputs error\n");
}
return 0;
}
/*******************************************/
//time_service.c
#include
#include
#include
#include
#include
#include
int main(int argc,char* argv[])
{
int sockfd,connfd,n;
char buf[100];
time_t t;
struct sockaddr_in addr;
bzero(&addr,sizeof(addr));
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(INADDR_ANY);
addr.sin_port=htons(3333);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
printf("creat socket error\n");
if(bind(sockfd,(struct sockaddr*)(&addr),sizeof(addr))!=0)
printf("bind port error\n");
listen(sockfd,10);
printf("beging listening\n");
for(;;){
if((connfd=accept(sockfd,(struct sockaddr*)NULL,NULL))==-1)
printf("accept error\n");
printf("extablish a connection\n");
t=time(NULL);
snprintf(buf,sizeof(buf),"%.24s\r\n",ctime(&t));
n=strlen(buf);
if(write(connfd,buf,strlen(buf))!=n)
printf("write warnning\n");
close(connfd);
}
return 0;
}
文章评论

共有 1 条评论

  1. 凹凸曼 于 2010-06-14 13:10:49发表:

    帮你顶上去