文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++TCP/IP编程实现远程文件传输
精品推荐
特别推荐
·C语言编程易犯毛病集合
·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编程实现远程文件传输
热点TOP10
·C#基础概念二十五问
·TCP/IP编程实现远程文件传输
·socket编程原理
·Beej的网络socket编程指南
·C/C++笔试、面试题目大汇总
·如何用C#编写文本编辑器
·C#编写的windows计算器-源代码
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·C# GridView 排序及分页
·Windows下C语言网络编程快速入门
·c#的random shuffle
·改编 的 C版 职工管理系统
·C语言的常用库函数使用方法分析及用途
·扑克牌的发牌程序(用伪随机数实现)
·飞机订票系统设计
·Visual C++ 实现数字化图像的分割
·C语言图形函数
·学生成绩管理系统实习
·C语言编程常见问题解答(目录)
·用C#下的Raw Socket编程实现网络封包监视

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

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


在TCP/IP网络结构中,为了保证网络安全,网络人员往往需要在路由器上添加防火墙,禁止非法用户用FTP安全危害较大的TCP/IP协议访问主机。而有时系统维护人员需要用ftp将一些文件从中心机房主机传到前端网点主机上,比如应用程序的替换升级。如果每次传输文件时都要打开防火墙,未免显得有些繁琐,要是在自己的应用程序中增加一个专门的文件传输模块,那将是十分愉快的事情。

  UNIX网络程序设计一般都采用套接字(socket)系统调用。针对目前十分流行的客户/服务器模式,其程序编写步骤如下:
  1.Socket系统调用
  为了进行网络I/O,服务器和客户机两端的UNIX进程要做的第一件事是调用socket()系统调用,建立软插座,指明合适的通讯协议。格式为:
  #include >sys/types.h>
  #include >sys/socket.h>
  int socket(int family,int type,int protocol)
  其中:(1)family指明套节字族,其值包括:
  AF_UNIX   (UNIX内部协议族)
  AF_INET   (Iternet协议)
  AF_NS (XeroxNs协议,TCP/IP编程取该值)
  AF_IMPLINK  (IMP链接层)
  (2)type 指明套接字类型,取值有:
  SOCK_STREAM     (流套接字)
  SOCK_DGRAM     (数据报套接字)
  SOCK_RAW      (原始套接字)
  SOCK_SEQPACKET   (定序分组套接字)
  一般情况下,前两个参数的组合就可以决定所使用的协议,这时第三个参数被置为0,如果第一个参数为AF_INET,第二个参数选SOCK_STREAM,则使用的协议为TCP;第二个参数选SOCK_DGRAM,则使用的协议为UDP;当第二个参数选SOCK_RAW时,使用的协议为IP。值得指出的是并不是所有的族和类型的组合都是合法的,具体请查阅相关资料。该系统调用若成功则返回一个类似文件描述符,成为套节字描述字,可以像文件描述符那样用read和write对其进行I/O操作。当一个进程使用完该软插座时,需用close(<描述符>)关闭(具体见后面内容)。
  2.服务器端Bind系统调用
  软插座创建时并没有与任何地址相关联,必须用bind()系统调用为其建立地址联系。其格式为:
  #include <sys/types.h>
  #include <sys/socket.h>
  int bind(int socketfd,strUCt sockaddr_in *localaddr,sizeof(localaddr));
  其中:(1)第一个参数socketfd是前步socket()系统调用返回的套节字描述符。
  (2)第二个参数被捆向本地地址的一种结构,该结构在sys/netinet/in.h中定义:
  struct sockaddr_in{
   short sin_family;/*socket()系统调用的协议族如AF_INET*/
   u_short sin_port;/*网络字节次序形式的端口号码*/
   struct in_addr sin_addr;/*网络字节次序形式的网络地址*/
   char sin_zero[8];
  }
  一台机器上的每个网络程序使用一个各自独立的端口号码,例如:telnet程序使用端口号23,而ftp文件传输程序使用端口号21。我们在设计应用程序时,端口号码可以由getservbyname()函数从/etc/services库文件中获取,也可以由htons (int portnum)函数将任意正整数转换为网络字节次序形式来得到,有些版本的UNIX操作系统则规定1024以下的端口号码只可被超级用户使用,普通用户程序使用的端口号码只限于1025到32767之间。网络地址可以由gethostbyname(char*hostname)函数得到(该函数和getservbyname()一样都以网络字节次序形式返回所有在他们结构中的数据),参数hostname为/etc/hosts文件中某一网络地址所对应的机器名。该函数返回一个类型为hostent的结构指针,hostent结构在netdb.h中定义:
  struct hostent{
   char *h_name;
   char **h_aliases;
   int h_addrtype;
   int h_length;  /*地址长度*/
   char **h_addr_list;

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




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

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

TCP/IP编程实现远程文件传输 相关文章:
·TCP/IP编程实现远程文件传输
·《三国志11》新武将完全中文名输入法
·如何输入国际音标
·输入验证+重启验证的软件破解 算法分析
·怎样彻底删除多余的输入法
·网页里嵌入JavaScript 验证空,汉字,字母,数字,长度输入
·易学易用的数字五笔输入法
·如何显示输入法图标(输入法图标消失)
·VB中使用EXCEL输出
·WIN ME下智能ABC输入法频繁出错的解决办法
TCP/IP编程实现远程文件传输 相关软件:
·紫光华宇拼音输入法V6-Final
·紫光拼音输入法V4.0 m3 增强版
·Google谷歌拼音输入法V1.0.23.40
·搜狗拼音输入法(可自定义字体、大小、颜色等)V3.0Beta2
·文本框日期输入函数
·Win2000输入法漏洞最新官方补丁中文版
·搜狗拼音输入法V3.0 正式版
·站长俱乐部劳务输出管理系统
·龙文智能输入平台 v3.80 Build 2005405 Beta
·数字五笔中文输入系统 V2006

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