当前位置:  技术问答>linux和unix

网络编程...传输后有乱码? 这2个程序哪里错了呢? 大虾帮帮。。关于文件传输方面的

    来源: 互联网  发布时间:2016-07-12

    本文导语:  /*服务器端程序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...

/*服务器端程序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);
  }
 /* 可以在这里加上自己的处理函数 */
 fp=fopen("test.txt","r");
 if(fp==NULL) {printf("Open Error."); exit(1);}
 while(fread(szStr,1,1024,fp))
   {
    printf("%sn",szStr);
   }
 if(send(new_fd,szStr,strlen(szStr),0)==-1)
  {
    fprintf(stderr,"Write Error:%sn",strerror(errno));
    exit(0);
   }
/* 这个通信已经结束*/
     close(new_fd);
   close(fp);
/* 循环下一个*/
  }
  close(sockfd);
  exit(0);
}


/*客户端程序client0*/
/*连接成功*/
  if((nbytes=recv(sockfd,buffer,RECVBUFSIZE,0))==-1)
  {
   fprintf(stderr,"Read Error:%sn",strerror(errno));
   exit(1);
  }
  buffer[nbytes]='';
  printf("I have received: %sn",buffer);
  fp2=fopen("Test.txt","w+");
  fwrite(buffer,sizeof(char),strlen(buffer),fp2);
  close(fp2);
/* 结束通讯 */
  close(sockfd);
  exit(0);
}

我只把他们连接成功后的程序发出来了,意思是服务器段读取一个文件(test.txt),将文件读取后(szStr)发给客户端,客户端接收传过来的文件内容存在(buffer)里,fp2创建一个新文件(Test.txt),fwrite将传过来的内容保存在一个文件(Test.txt)里。

这段文件开头是我直接复制的另外程序的,连接成功以后的内容使我自己改的,问题是:
在服务器端程序里面定义时候有句 char hello[]="Hello!Socket communication world!n";
这句我2个程序里面根本都没用到,但是这句去掉后Test.txt文件里面有乱码,不去掉的话就正常(不过好像结果多了一行空的出来)。太奇怪了,上面这2段程序哪里有问题吗?
test.txt的内容是
abcdefg
1234567
如果char hello[]="Hello!Socket communication world!n";不去掉运行
Test.txt内容是
abcdefg
1234567

去掉 char hello[]="Hello!Socket communication world!n";运行的话
Test.txt内容是
abcdefg
1234567
�fݿ�b���%���"��lgݿ
这个到底是什么原因呢? 谁帮下哦,我把服务器和客户完整程序发回复里

|
你又跑这里来开个帖子。

写入的buffer大小没控制好。

hello那个变量却是没用,它顶替了你未初始化的地方。
我再仔细看看你的代码。

|
对,应该是buffer大小的问题。szStr这个得初始化一下,否则后面就有随机的乱码了。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 嵌入式linux网络编程的问题,大虾来接分
  • 我想学习网络编程,可不知道如何下手,各路大虾各些建议吧!!(!言之有理都有分)
  • 继续请教,网络编程问题,服务器端读取后文件里没数据? 大虾们看看。。在线等。
  • 大虾Help!!! Linux下一个网络编程的问题
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 用java做网络编程和用c做网络编程有啥区别
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 嵌入式网络编程与非嵌入式网络编程有什么不同
  • c/c++ iis7站长之家
  • 读过 Unix网络编程 或者 熟知Unix网络编程的 的进来看一下
  • 请问unix网络编程和linux网络有什么区别
  • UNIX网络编程卷1
  • 高分求网络编程方面的书籍
  • 求助:linux/unix网络编程
  • 新手请教,linux网络编程。
  • linux环境进行网络编程的教材
  • Unix/Linux网络编程怎样来做一个项目?
  • 关于文件操作和Socket网络编程!
  • linux下网络编程环境配置问题
  • java的网络编程
  • 网络编程中“多宿”是什么意思
  • 谁知道哪有《Unix网络编程》w.richard stevens 著的下载?
  • 菜鸟问题:请问要在Linux操作系统下完成TCP/IP网络编程,用什么编程工具好?
  • 请推荐几本Linux/Unix网络编程的好书吧
  • 求介绍linux下的网络编程书


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3