选择显示字体大小

tcp/ip通信程序设计的丰富多样性

  刚接触tcp/ip通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为tcp/ip编程很简单。其实不然,tcp/ip编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。

  一、通信方式

  主要有以下三大类:

  (一)server/client方式

  1.一个client方连接一个server方,或称点对点(peer to peer):
  2.多个client方连接一个server方,这也是通常的并发服务器方式。
  3.一个client方连接多个server方,这种方式很少见,主要用于一个客户向多个服务器发送请求情况。

   (二)连接方式

  1.长连接

  client方与server方先建立通讯连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在,可以用下面命令查看连接是否建立:

 .netstat –f .netgrep 端口号(如5678)。

  此种方式常用于点对点通讯。

  2.短连接

  client方与server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点通讯,比如多个client连接一个server.

  (三)发送接收方式

  1.异步

  报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况:

  (1)异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接收
  (2)异步单工:接收和发送是用两个不同的程序来完成。

  2.同步

  报文发送和接收是同步进行,既报文发送后等待接收返回报文。同步方式一般需要考虑超时问题,即报文发上去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。

  实际通信方式是这三类通信方式的组合。比如一般书上提供的tcp/ip范例程序大都是同步短连接的server/client程序。有的组合是基本不用的,比较常用的有价值的组合是以下几种:

  同步短连接server/client
  同步长连接server/client
  异步短连接server/client
  异步长连接双工server/client
  异步长连接单工server/client

  其中异步长连接双工是最为复杂的一种通信方式,有时候经常会出现在不同银行或不同城市之间的两套系统之间的通信。比如金卡工程。由于这几种通信方式比较固定,所以可以预先编制这几种通信方式的模板程序。

  二.报文格式

  通信报文格式多样性更多,相应地就必须设计对应的读写报文的接收和发送报文函数。

  (一)阻塞与非阻塞方式 

  1.非阻塞方式

  读函数不停地进行读动作,如果没有报文接收到,等待一段时间后超时返回,这种情况一般需要指定超时时间。

  2.阻塞方式

  如果没有报文接收到,则读函数一直处于等待状态,直到有报文到达。

  (二)循环读写方式

  1.一次直接读写报文

  在一次接收或发送报文动作中一次性不加分别地全部读取或全部发送报文字节。

  2.不指定长度循环读写

  这一般发生在短连接进程中,受网络路由等限制,一次较长的报文可能在网络传输过程中被分解成了好几个包。一次读取可能不能全部读完一次报文,这就需要循环读报文,直到读完为止。

  3.带长度报文头循环读写

  这种情况一般是在长连接进程中,由于在长连接中没有条件能够判断循环读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读报文.实际情况中,报头的码制格式还经常不一样,如果是非ascii码的报文头,还必须转换成ascii,常见的报文头码制有:

  (1)n个字节的ascii码
  (2)n个字节的bcd码
  (3)n个字节的网络整型码

  以上是几种比较典型的读写报文方式,可以与通信方式模板一起预先提供一些典型的api读写函数。当然在实际问题中,可能还必须编写与对方报文格式配套的读写api.

  在实际情况中,往往需要把我们自己的系统与别人的系统进行连接,有了以上模板与api,可以说连接任何方式的通信程序都不存在问题。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons