基于TCP/IP协议的化学专家实时交流系统

基于TCP/IP协议的化学专家实时交流系统

赵勇 秦红胜 张卫东 林少凡

摘要:阐述了开发“化学专家实时交流系统”的软、硬件环境和技术要点,介绍了在Windows9x/NT环境下,用Visual C+ +开发Windows Sockets通信程序、实时显示三维分子的情况。
关键词:化学,套接字,Sockets,网络通讯
中图分类号:TP 393

  随着计算机网络在我国、尤其是在高校的普及,它已经成为广大科学工作者进行交流、获取信息的重要工具。因特网为我们打开了实时交流的渠道。本文介绍的是在已经建立的化学信息网站ChemInf的基础上开发设计的基于TCP/IP协议的“化学专家实时交流系统”,力图满足化学家的需求。

1 开发Winows Sockets网络通信程序的软、硬件环境

1.1 硬件环境

  使用“化学专家实时交流系统”,需要一台已经接入互联网的计算机(目前还不支持拨号接入方式,因为拨号方式采用的是动态IP技术)。为了显示真彩的三维分子,需要系统支持16位增强色以上的显示模式。

1.2 操作系统与开发环境

  Windows 9x/NT支持Windows Sockets API,在以下的介绍中,我们将以在Windows 9x环境下的开发为例。编程语言采用了可视化、面向对象技术的Microsoft Visual C++5.0。Visual C++5.0中的Microsoft基类(MFC,即Microsoft Foundation Class)库是一系列C++类,其中封装着为Microsoft Windows操作系统系列编写应用程序的各种功能。在有关套接字方面,Visual C++5.0对原来的Windows Sockets库函数进行了一系列封装,继而产生了CSocket、CSocketFile等类,它们封装着有关Socket的各种功能。

1.3 通信协议

  我们使用的是TCP/IP协议。Windows 9x/NT带有协议。但是,所开发的网络通信应用程序并不能直接与TCP/IP核心打交道,而是与网络应用编程界面Windows Sockets API打交道。Windows Sockets API则可直接与TCP/IP核心进行沟通。
  TCP/IP核心协议连同网络物理介质(如网卡)一起,都是提供网络应用程序间相互通信的设施。之所以选择TCP是因为它是一种基于连接的协议,在文件传输时会先行建立连接,通过连接可确保文件传输的正确性;UDP则是一种无连接的协议,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以我们没有采用UDP协议。当然,在作网络广播时,UDP协议更有效率。

2 Socket编程模型在化学专家实时交流系统中的应用

  网络通信通常指两台主机或两个进程,通过网络来传递它们之间的数据,这样的过程可以理解为网络的一次对话(Session)。网络对话的每一端就成为网络通信的端点,即网络通信实体的最小单位。当使用Socket接口对网络通信编程时,Socket是网络通信过程中端点的抽象表示。我们采用了客户/服务器模型,具体的流程如下图所示:

3 小结

  实现Windows Sockets应用程序在网上的数据通信,必须在Windows 9x/NT控制面板中的网络配置项里,添加TCP/IP协议,同时给定相应的IP地址,这些IP地址在所建的局域网中,不能有重复,一般要采用C类地址。

服务器端(SERVER)

客户端(CLIENT)
1、构造套接字ser_s1 1、构造套接字cli_s
2、创建该套接字 2.创建核套接字

ser_s1.Create(port);

cli_s.Create();

其国,port为服务器方打开的通信端口号
3、开始监听来自客户机的连接 3、客户机方套接字cli_s向服务器方套接字ser_s1发出连接请求:
 

cli_s.Connect(Addr,port);

  其中,Addr是欲连接服务器方套接字地址结构指针,可采用IP地址或机器名。port即打开的端口号,其值与服务器方的一致。
4、构造一个新的套接字ser_s2
5、服务器等待从ser_s2上接受客户连接请求
6、构造一个类CsocketFile的对象file 4、构造一个类CSocketFile的对象file
7、构造类CArchive的对象arIn、arOut,以用于数据的收和发。 5、构造类Carchive的对象arIn、auOut,以用于数据的收和发。
8、使用arIn和arOut进行收或发数据 6、使用arIn和arOut进行发或收数据

arIn>>value; arout<<value;

arOut<<value;arIn>>value;

其中,value是所传输的数据,包括原子位置、原子种类以及原子之间的键合关系等等。 其中,value是所传输的数据,包括原子位置、原子种类以及原子之间的键合关系等等。
9、摧毁所创建的CSocket、CSocketFile,Carchive等类的对象 7、摧毁所创建的CSocket、CSocketFile,Carchive等类的对象

  使用Visual C++5.0进行Windows Sockets应用程序开发,需要注意以下几点:
  (1)服务器方和客户方应用程序都要进行初始化处理,如port(端口)缺省值的设定等。由于我们的“化学专家实时交流系统”是服务器和客户方和综合体(即,可以接收和发送相同的信息),初始化处理更加重要。
  (2)应独立编写通讯模块,把网络通信作为应用程序中的一个模块,有利于称植到其它应用程序。
  (3)尽量避免通讯双方同时发送数据,这样可能造成数据的暂时阻塞。
  目前,该系统基本满足了化学家相互交流的需求,有较强的应用价值,在保证网络有足够的带宽的情况下,能够成功地实现实时数据传输。

作者单位:赵勇(南开大学中心实验室 天津 300071)
     秦红胜(南开大学中心实验室 天津 300071)
     张卫东(南开大学中心实验室 天津 300071)
     林少凡(南开大学中心实验室 天津 300071)

参考文献

[1][美]Microsoft.使用TCP/IP协议的互络互连.曹康,等译,北京:学苑出版社,1994
[2]鲁士文.计算机网络原理与网络技术.北京:机械工业出版社,1996
[3][美]Peter Norton.MFC开发Windows95/NT4应用程序.孙凤英,等译.北京:清华大学出版社,1998
[4][美]David J Kruglinski.Visual C++技术内幕(第四版).潘爱民,等译.北京:清华大学出版社,1999
[5]刘冲,等.INTERNET上的化学信息.计算机辅助教学研究与发展(Ⅱ),暨南大学出版社,1997
[6]刘冲,等.INTERNET化学资源一览.计算机与应用化学.1997,13(增刊)
[7]刘冲,等.化学信息在线服务系统的建立.计算机与应用化学.1997,13(增刊)
[8]陈勇,等.因特网上交互式化学信息数据库的设计与建设.计算机与应用化学,2000,17(1)

 

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3526


你可能感兴趣的:(TCP/IP)