当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: Linux网络编程,第一部分BSD套接口篇 ——这是关于如何用各种可以得到的接口为Linux开发网络程序的系列文章的第一篇。
 

 

    摘要:c++是以c语言为基础,支持数据抽象和面向对象的程序设计语言。c++对c语言的扩充部分汲取了 许多著名语言中最优秀的特征,如从algo168中吸取了操作符重载机制等。由于c++语言具有与c语言一 样的高执行效率,并容易被熟悉c语言的软件人员接受,因而很快得以流行。但这种混合型面向对象的 程序设计语言是一种新的程序设计语言,人们对它许多潜在的性能(封装、继承、多态等)还没有充分 地理解和应用......
    摘要: gnu general public license version 2, june 1991 copyright (c) 1989, 1991 free software foundation, inc. 675 mass ave, cambridge, ma 02139, usa everyone is permitted to copy and distribute......


BSD套接口篇(上)(翻译)

linux网络编程,第一部分

bsd套接口篇 【程序编程相关:如何调整dotNet 服务器的性能,具体

【推荐阅读:asp分页

    ——这是关于如何用各种可以得到的接口为linux开发网络程序的系列文章的第一篇.就像大多数unix-based的操作系统一样,linux支持将tcp/ip作为本地的网络传输协议.在这个系列中,我们假定你已经比较熟悉linux上的c编程与linux的一些系统知识诸如signals,forking等等. 【扩展信息:IEEE 802? Groups - P

    这篇文章是关于如何用bsd套接口创建网络程序的基础介绍 .在下一篇中,我们会解决涉及到建立(网络)deamon进程的问题.而且今后的文章我们还会涉及到使用远程过程调用(rpc),以及用corba/distributed objects进行开发.

 

一.tcp/ip的基础介绍

    tcp/ip协议族允许两个运行在同一台电脑或者由网络连接在一起的两台电脑上的程序进行通讯.这个协议族是专门为了在不可靠的网络上进行通讯设计的.tcp/ip允许两个基本的操作模式——面向连接的可靠的传输(指tcp)与无连接的(connectionless)不可靠的传输(udp).下图举例说明了tcp/ip协议族的分层结构.

    tcp提供带有对上层协议透明的中继功能的,顺序的,可靠的,双向的(bi-directional),以连接为基础的字节传输流.tcp将你的信息分割成数据报(不大于64kb)并保证所有的数据报无误的按照顺序都到达目的地.由于以连接为基础,所以一个虚拟连接必须在一个网络实体(network entity)与另一个之间进行通信前建立.udp相反则提供一个(非常快的)无连接的不可靠消息传输(消息的大小是一个确定的最大长度).

    为了使程序间可以相互通信,不论他们是在同一个机器(通过loopback接口)还是不同主机,每一个程序都必须有独立的地址.

    tcp/ip地址由两部分组成——用来辨别机器的ip地址与用来辨别在那台机器上的特定程序的端口地址.

    地址可以是点分(dotted-quad)符号形式的(如,127.0.0.1)或者是主机名形式的(如,www.csdn.net).系统可以使用/etc/hosts或dns域名服务(如果可以获得的话)进行主机名到点分符号地址(也就是ip地址)的转换.

    端口从1号开始编号.1与ipp0rt_reserved(在/usr/include/netinet/in.h中定义,通常为1024)之间的段口号保留给系统使用(也就是说,你必须以root的身份建立一个网络服务来绑定这部分的端口).

    最简单的网络程序大都用的客户-服务器模型.一个服务进程等待一个客户进程连接他.当连接建立时,服务器代表客户执行特定的任务,通常这这以后连接就中断了.

二.使用bsd套接口界面

    最通行的tcp/ip编程方法就是使用bsd套接口界面编程.通过它,网络端点(network endpoints)(ip地址与端口地址)以套接口(sockets)的形式出现.

    这套套接口ipc(interprocess communication,进程间通讯)设施(从4.2bsd开始引入)的设计是为了能让网络程序的设计能够独立于不同的底层通信设施.

1.建立一个服务器程序

    要使用bsd界面建立一个服务器程序,你必须通过以下步骤:

      1.通过函数socket()建立一个套接口

      2.通过函数bind()绑定一个地址(ip地址与端口地址).这一步确定了服务器的位置,使客户端知道如何访问.

      3.通过函数listem()监听(listen)端口的新的连接请求.

      4.通过函数accept()接受新的连接.


...   下一页
 ·maven 专题之一    »显示摘要«
    摘要: 1 maven和ant的比较 第一:每次和别人说maven的时候,很多会认为是全新的东西而不肯放弃ant。其实,ant脚本是可以直接运行在maven中的。 如果要说maven和ant有什么差别,我觉得最大的差别就是在于maven的编译以及所有的脚本都有一个基础,就是pom(project object model)。这个模型定义了项目的方方面面,然后各式各样的脚本在这个模型上工作,而a......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE