文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++TCP/IP编程实现远程文件传输
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
·TCP/IP网络重复型服务器通信软件的设计
·DirectX游戏开发入门
·经典与现代的结合:在MFC中集成RAD .NET框架
·Windows API-GDI入门基础知识详解(2)
·Visual C++ 入门精解
·C#基础概念二十五问
·用C#实现pdf文件的完整性验证
·成为嵌入式程序员应知道的0x10个问题
·TCP/IP编程实现远程文件传输
·几个C#编程的小技巧
热点TOP10
·学生成绩管理系统实习
·C#编写的windows计算器-源代码
·socket编程原理
·飞机订票系统设计
·C/C++笔试、面试题目大汇总
·TCP/IP编程实现远程文件传输
·C语言图形函数
·Visual C++ 实现数字化图像的分割
·改编 的 C版 职工管理系统
·C#基础概念二十五问
·C语言的常用库函数使用方法分析及用途
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·用C语言实现Ping程序功能
·C# GridView 排序及分页
·进程调度模拟程序
·Windows下C语言网络编程快速入门
·通讯录的源代码(用链表实现)
·DirectX游戏开发入门
·在Visual Studio.NET中使用Crystal Report(上)
·asp.net中调用javascript函数实现多功能日期控件示例

TCP/IP编程实现远程文件传输

日期:2007年5月11日 作者: 查看:[大字体 中字体 小字体]


  5.客户端调用connect()与服务器建立连接。格式为:
  connect(int socketfd,struct sockaddr_in *servsddr,int addrlen)
  客户端取得套接字描述符后,用该调用建立与服务器的连接,参数socketfd为socket()系统调用返回的套节字描述符,第二和第三个参数是指向目的地址的结构及以字节计量的目的地址的长度(这里目的地址应为服务器地址)。调用成功返回0,否则将返回-1并设置errno。
  6.通过软插座发送数据
  一旦建立连接,就可以用系统调用read和write像普通文件那样向网络上发送和接受数据。Read接受三个参数:一个是套节字描述符;一个为数据将被填入的缓冲区,还有一个整数指明要读的字节数,它返回实际读入的字节数,出错时返回-1,遇到文件尾则返回0。Write也接受三个参数:一个是套节字描述符;一个为指向需要发送数据的缓冲区,还有一个整数指明要写入文件的字节个数,它返回实际写入的字节数,出错时返回-1。当然,也可以调用send和recv来对套节字进行读写,其调用与基本的read和write系统调用相似,只是多了一个发送方式参数。
  7.退出程序时,应按正常方式关闭套节字。格式如下:
  int close(socketfd)
  前面介绍了UNIX客户/服务器模式网络编程的基本思路和步骤。值得指出的是socket编程所涉及的系统调用不属于基本系统调用范围,其函数原形在libsocket.a文件中,因此,在用cc命令对原程序进行编译时需要带-lsocket选项。
  现在,我们可以针对文章开头提出的问题着手进行编程了。在图示的网络结构中,为使中心机房的服务器能和网点上的客户机进行通信,需在服务器端添加通过路由器1112到客户机的路由,两台客户机也必须添加通过路由器2221到服务器的路由。在服务器的/etc/hosts文件中应该包含下面内容:
  1.1.1.1  server
  2.2.2.2  cli1
  2.2.2.3  cli2
  客户机的/etc/hosts文件中应该有本机地址信息和服务器的地址信息,如cli1客户机的/etc/hosts文件:
  2.2.2.2  cli1
  1.1.1.1  server
  网络环境搭建好后,我们可以在服务器端编写fwq.c程序,负责接受客户机的连接请求,并将从源文件中读取的数据发送到客户机。客户机程序khj.c向服务器发送连接请求,接收从服务器端发来的数据,并将接收到的数据写入目标文件。源程序如下:
/*服务器源程序fwq.c*/
#include <stdio.h>
#include <sys/types.h>
#include <sys/fcntl.h>
#include <sys/socket.h>
#include <sys/netinet/in.h>
#include <netdb.h>
#include <errno.h>
main()
{
  char c,buf[1024],file[30];
  int fromlen,source;
  register int k,s,ns;
  struct sockaddr_in sin;
  struct hostent *hp;
  system(″clear″);
  printf(″
″);
  
  printf(″

输入要传输的文件名:″);
  scanf(″%s″,file);
  if ((source=open(file,O_RDONLY))<0){
   perror(″源文件打开出错″);
   exit(1);
  }
  printf(″
在传送文件,稍候…″);
  hp=gethostbyname(″server″);
  if (hp==NULL){
   perror(″返回主机地址信息错!!!″);
   exit(2);
  }
  s=socket(AF_INET,SOCK_STREAM,0);
  if(s<0){
   perror(″获取SOCKET号失败!!!″);
   exit(3);
  }
  sin.sin_family=AF_INET;
  sin.sin_port=htons(1500);/*使用端口1500*/
  bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);
  if(bind(s,&sin,sizeof(sin))<0){
   perror(″不能将服务器地址捆绑到SOCKET号上!!!″);
   colse(s);
   exit(4);
  }
  if(listen(s,5)<0{
   perror(″sever:listen″);
   exit(5);
  }
while(1){
  if((ns=accept(s,&sin,&fromlen))<0){
   perror(″sever:accept″);
   exit(6);
  }
  lseek(source,OL,0);/*每次接受客户机连接,应将用于读的源文件指针移到文件头*/
  write(ns,file,sizeof(file)); /*发送文件名*/

上一页 [1] [2] [3] 下一页 




上一篇:Linux 下 C++程序的异常处理技巧

下一篇:在C语言中如何处理时间和日期

TCP/IP编程实现远程文件传输 相关文章:
·“黑客”教你如何远程控制计算机
·MPEG、RM、WMV电影文件格式转换指南
·如何实现局域网打印机共享
·socket编程原理
·清除垃圾文件DIY
·怎样清除硬盘及系统垃圾文件?
·揭秘远程破解盗窃QQ密码的各种方法
·ASP.NET上传文件的实例
·Windows黑客编程基础
·TCP/IP编程实现远程文件传输
TCP/IP编程实现远程文件传输 相关软件:
·最强文件加密锁2007
·巨城文件保险柜 v2.3
·Ultra RM Converter(Real文件转换分割,合并)V3.3.0916 汉化版
·Allok Video Splitter(视频文件分割)V2.2 0726 修正II版
·联想OEM Winxp的5个文件
·C++编程思想
·文件夹加密器V9.6
·TCP-IP详解卷2:实现
·shell编程和unix命令
·西门子plc软件及教程 文件类型 其它介绍

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot