当前位置: 技术问答>linux和unix
继续请教,网络编程问题,服务器端读取后文件里没数据? 大虾们看看。。在线等。
来源: 互联网 发布时间:2016-07-12
本文导语: /* 客户端程序client0.c */ /*连接成功*/ fp=fopen("test.txt","r"); if(fp==NULL) { printf("Open Error."); exit(1);} memset(szStr,0,1024); if(fread(szStr,1,1024,fp)) { printf("%s",szStr);exit(1); } if(send(sockfd,szStr,strle...
/* 客户端程序client0.c */
/*连接成功*/
fp=fopen("test.txt","r");
if(fp==NULL) { printf("Open Error."); exit(1);}
memset(szStr,0,1024);
if(fread(szStr,1,1024,fp))
{
printf("%s",szStr);exit(1);
}
if(send(sockfd,szStr,strlen(szStr),0)==-1)
{
fprintf(stderr,"Write Error:%sn",strerror(errno));
}
close(fp);
/* 结束通讯 */
close(sockfd);
exit(0);
/* 服务器端程序server0.c */
while(1)
{
/* 服务器阻塞,直到客户程序建立连接 */
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr*)(&client_addr),&sin_size))==-1)
{
fprintf(stderr,"Accept error:%sna",strerror(errno));
exit(1);
}
/* 可以在这里加上自己的处理函数 */
if(nbytes=(recv(new_fd,buffer,1024,0))==-1)
{
fprintf(stderr,"Read Error:%sn",strerror(errno));
exit(1);
}
buffer[nbytes]='';
printf("%s",buffer); //运行后这句没显示出来呢?
fp2=fopen("Test.txt","w+"); //运行后有创建新的文件Test.txt但是没内容
fwrite(buffer,sizeof(char),strlen(buffer),fp2);
/* 这个通信已经结束*/
close(new_fd);
close(fp2);
/* 循环下一个*/
}
close(sockfd);
exit(0);
刚才一个帖子是客户端服务器端读取文件,然后将内容传给客户端,客户端保存在文件里。已经弄好了。
这个程序是服务器端与客户端连接成功后,客户端这边读取文件test.txt里面的内容,然后发送给服务器端,服务器端接收到以后,fp2创建新文件Test.txt,将读取到的内容fwrite存入文件里。运行后为什么Test.txt里面的内容是空的呢?没接收到客户端发送过来的数据。难道是执行顺序先后的问题? 我看了书上介绍,明明可以connect以后客户端给服务器端发请求,然后服务器端recv处理的。。
上面这个是连接好后2边的程序,我把完整程序发到回复里面。。。。大虾看看。
在线等哈。。
/*连接成功*/
fp=fopen("test.txt","r");
if(fp==NULL) { printf("Open Error."); exit(1);}
memset(szStr,0,1024);
if(fread(szStr,1,1024,fp))
{
printf("%s",szStr);exit(1);
}
if(send(sockfd,szStr,strlen(szStr),0)==-1)
{
fprintf(stderr,"Write Error:%sn",strerror(errno));
}
close(fp);
/* 结束通讯 */
close(sockfd);
exit(0);
/* 服务器端程序server0.c */
while(1)
{
/* 服务器阻塞,直到客户程序建立连接 */
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr*)(&client_addr),&sin_size))==-1)
{
fprintf(stderr,"Accept error:%sna",strerror(errno));
exit(1);
}
/* 可以在这里加上自己的处理函数 */
if(nbytes=(recv(new_fd,buffer,1024,0))==-1)
{
fprintf(stderr,"Read Error:%sn",strerror(errno));
exit(1);
}
buffer[nbytes]='';
printf("%s",buffer); //运行后这句没显示出来呢?
fp2=fopen("Test.txt","w+"); //运行后有创建新的文件Test.txt但是没内容
fwrite(buffer,sizeof(char),strlen(buffer),fp2);
/* 这个通信已经结束*/
close(new_fd);
close(fp2);
/* 循环下一个*/
}
close(sockfd);
exit(0);
刚才一个帖子是客户端服务器端读取文件,然后将内容传给客户端,客户端保存在文件里。已经弄好了。
这个程序是服务器端与客户端连接成功后,客户端这边读取文件test.txt里面的内容,然后发送给服务器端,服务器端接收到以后,fp2创建新文件Test.txt,将读取到的内容fwrite存入文件里。运行后为什么Test.txt里面的内容是空的呢?没接收到客户端发送过来的数据。难道是执行顺序先后的问题? 我看了书上介绍,明明可以connect以后客户端给服务器端发请求,然后服务器端recv处理的。。
上面这个是连接好后2边的程序,我把完整程序发到回复里面。。。。大虾看看。
在线等哈。。
|
不会是客户端堵塞住了吧。
你要学习一下怎么用gdb来调试了,要不然这样一条一条的回复我就要累死了。
你确认一下客户端执行过了send()么。是不是在connect()时候就停住了
你要学习一下怎么用gdb来调试了,要不然这样一条一条的回复我就要累死了。
你确认一下客户端执行过了send()么。是不是在connect()时候就停住了