选择显示字体大小

在vb的winsock编程框架


  microsoft的windows sockets api是windows下的网络应用程序接口,为了适用于windows下的消息机制和异步的i/o选择操作,windows sockets api在功能上扩充了将近20个函数,其中扩充的部分均冠以前缀wsa(windows sockets asynchronous),如wsastartup、wsaclean等, 充分体现了widnows的优越性。此外,windows sockets api有16位版和32位版两种,16位版是单进程的,32位版则提供了多线程下的安全保护。

   microsoft visual basic提供了用于windows sockets编程的可用控件——winsock控件。该控件为用户提供了访问tcp和udp网络的极其方便的途径。并且适用于microsoft access、visual basic、visual c++和visual foxpro等多种可视化环境。通过winsock控件编制c/s程序,程序员无须了解tcp或低级winsock apis调用实现的细节,如用户无须考虑网络字节顺序与本机字接顺序便可直接进行数据的传送。用该控件实现网间进程通信极其方便。

   在tcp应用中,为了建立一个网络连接实例(instance)的服务器端,只需设置本地服务端口号,然后服务器调用方法listen进入阻塞状态,等待来自客户的连接请求。与此对应的客户端不但要将winsock的属性remotehost置为服务器的名称(ip地址或网络代号),还应设置服务器所监听的相应服务的端口号(remoteport),如ftp服务在21号端口,http在81号端口等。然后调用方法winsock.connect向服务器发出请求。服务器接收到客户请求时,事件connectionrequest将被触发。如服务器愿意提供服务,则可调用accept方法接受连接。

   一旦连接建立,两端均可使用senddata或getdata进行数据的发送或接收。事件dataarrival将在另一端数据准备就绪时被触发。

   udp协议的实现与tcp不同的是,调用sockets的两端无需建立连接便可进行数据的传输。因此,一个udp应用可以同时担任服务器或客户的角色。

   以下程序代码为visual basic windows sockets编程的基本框架

   '服务器

   private sub command1.click()

   '设置本地服务端口号

   winsock1.localport=2048

'服务器进入监听状态

   winsock1.listen

   end sub

   private sub winsock1_connectionrequest(byval requestid as long)

   '收到客户连接请求

   '检查socket状态

   if winsock1.state <> sckclosed then winsock1.close

   '接受客户请求

   winsock1.accept requestid

   end sub

  private sub winsock1_dataarrival(byval bytestotal as long)

   '对方数据已准备好

   '可用getdata()/senddata()接收/发送数据

   '处理客户数据

   ……

   end sub

   private sub form_unload(cancel as integer)

   winsock1.close

   end sub


   '客户方

   private sub command1.click()

   '设置服务器网络名

   winsock1.remotehost=“193.168.1.40”


'设置服务器相应服务端口号

winsock1.remoteport=2048

   '向服务器发出连接请求

   winsock1.connect

   end sub

   private sub winsock1_connect()

   '服务器响应连接

   '可以进行getdata()/senddata()进行数据传输

   ……

   end sub

   private sub form1.unload()

   winsock1.close

   end sub

   该段程序演示了用visual basic建立tcp连接的基本过程。因本文重在讲解sockets编程,故文中未涉及vb自己封装的故障处理函数winsock1.erroe(),读者可自行编制。以上程序段可作为一般tcp应用的基本框架加以扩展使用。

   microsoft visual c++实现过程与前述的vb实现类同。具体实例可见microsoft visual c++ samples中的chatsrv与chater程序。

   随着inte.net的逐步兴起,sockets编程必将成为流行的网络编程接口之一。也许您会发问:iso的osi模型又是何等地位呢?笔者的观点是:iso的osi模型必将成为网络应用的统一界面,sockets接口的广泛应用则为osi模型开拓了更广泛的应用前景!


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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