Winsocket网络编程谈

Author: 飞人 Date: 2001年 42期

?牐燱insocket编程是非常复杂的,这令一般人望而生畏。但如果你想编写这样的程序,又不懂得相关知识,怎么办呢?Delphi的网络组件库中为我们提供了关于实现网络通信的组件,其中ClientSocket和ServerSocket组件使我们能够很方便地编写出自己的网络通信和资源共享程序。
  #1    设置Winsocket属性
  ?牐犜贒elphi4.0中,将Winsocket细分为两种组件:ClientSocket和ServerSocket,它们分别作为客户端和服务器端的组件。通过这两种组件之间的通信,再加上辅助的应用程序代码,就可以实现一个简单的通信程序。当然,如果你想在客户端程序中再引入ServerSocket的话,那么客户端程序就可以充当服务器了,可以对其他的客户端程序的请求进行响应。
  ?牐犎绻诒嘈捶衿鞫顺绦颍捅匦肷柚肧erverSocket组件的Port属性。设置此参数主要是因为在同一台计算机上可能运行着多个服务器程序,而它们可能总在不停地接受来自于远程客户端程序的连接请求。也可以设置Service属性,它指示了ServerSocket所提供的服务类型,比如:FTP、HTTP等,然后设置Active属性为True。
  ?牐犎绻诒嘈纯突Ф顺绦颍蛏柚肅lientServer组件的属性就多一些。Port属性应设置成和服务器端的Port属性值一致,另外Host的属性必须正确设置,它是一个只读属性,在设计时不可用。Host指示了客户程序所要连接的远程服务器的主机名。也可以设置Address属性,也就是远程主机的IP地址。
  #1    建立与远程计算机的连接
  ?牐犚谠冻碳扑慊低持浣惺荽洌紫缺匦朐谕ㄐ诺牧教ㄖ骰浣?立连接。
  ?牐牱衿鞫说腟erverSocket组件调用Open方法初始化Socket连接,同时也就设置了Active属性为True,将ServerSocket组件设置成侦听模式,随时侦测是否有连接请求。
  ?牐犎绻衿鹘邮芰丝突С绦虻牧忧肭螅虼シnAccept事件,如下代码就是处理接受连接后服务器程序所要做的工作。
  ?牐爌rocedure Myform..ServerSocketAccept(Sender:TObject,Socke:TCustomWinSocket);?牔?
  ?牐燽egin
  ?牐營sServer:= True;??
  ?牐爀nd;
  ?牐犜诳突Ф顺绦蛑校珻lientSocket组件则设置Port、Host等必须的属性,然后设置Active属性为True,提出连接请求。
  #1    计算机之间的数据传输
  ?牐犚坏┓衿鞫私邮芰丝突Щ矫娴牧忧肭螅突Щ涂梢苑⑺褪荨U馐保诳突Щ头衿髦渚陀涤辛艘桓鯯ocket,通过此Socket双方实现通信。所以Socket属性很重要,它又拥有很多的方法,用其中的几个简单的方法,就可以实现数据的发送和接收。
  ?牐牽突Щ擞萌缦滦问剑篊lientSocket1.socket.sendtext('string you want to send');?牔?
  ?牐犜诜衿鞫瞬捎萌缦滦问剑篠erverSocket1.socket.recievetext(str,string);?牔?
  ?牐牬撕祷亟邮盏降淖址某ざ龋址娲⒃诒淞縮tr中。
  ?牐犐鲜鍪鞘荽涞淖罴虻サ睦樱慊箍梢圆捎肧ocket属性所提供的其他方法来实现复杂的数据传输。