在Delphi中,对于Windows中的Socket进行了有效的封装。在Delphi中,按其继承关系,可以分层两类:
编程思路:通过Socket类 TServerSocket&TClientSocket编程,其实都是通过属性Socket类的属性-->Delphi是一种功能强大的面向对象的编程语言,在网络方面,它将windows API封装成许多组件,大大简化了编程的复杂程度。对于一些比较简单的程序,利用Delphi中的一些网络组件,可以轻松地解决问题。 下面将说明TClientSocket组件、TserverSocket组件。 一.TClientSocket组件TClientSocket组件主要作为客户端的套接字使用。它封装了客户端的套接字,在与服务器建立连接后,就负责管理这个链接,在结束连接之后关闭套接字。下面将简单地介绍TClientSocket组件的主要属性、方法和事件。 1.属性 ●Active:设置ClientSocket是否打开。 ●ClientType:设置ClientSocket使用阻塞式还是非阻塞式。 ●Address:想要连接的服务器的ip地址。 ●Host:想要连接的服务器的主机名。 ●Port:想要连接服务器的端口号。 ●Service:想要获得的服务。 ●Socket:TClientWinSocket连接所使用的Socket,它负责数据的传输。 上面是TclientSocket组件的主要属性。在实际使用中,主要是设TclientSocket组件的Address属性(或Host属性)和Port属性。只要知道服务器的ip地址、端口号,将组件的Active属性设置为True,就可以建立和服务器Socket的连接了。属性ClientType是对应套接字在试图获得数据没有到来时,就会占用进程,而不去处理其他的事,直到数据到来为止。非阻塞则正好相反,在套接字等待数据而数据还未到来时,套接字不会等待,而是直接返回,等待数据到来时才去接收数据,在一般情况下,用非阻塞比较多。 2.方法 ●Create:创建一个TClientSocket对象。 ●Destroy:释放一个TClientSocket对象。 ●Open:初始化Socket连接,等同于将Active属性设置为True。 ●Close:关闭Socket连接,等同于将Active属性设置为False。 3.事件 ●OnConnect:当客户与服务器建立连接后该事件被触发。 ●OnConnecting:在找到服务器时,当尚未建立连接时,该事件被触发。 ●OnDisConnect:在改变连接前,该事件被触发。 ●OnError:在创建、使用或者关闭套接字出现错误时,该事件被触发。 ●OnLookup:在试图寻找服务器端套接字时,该事件被触发。 ●OnRead:在客户端有数据到来并可以读取时,该事件被触发。 ●OnWrite:在客户端有数据需要发送时,该事件被触发。 二.TServerSocket组件TserverSocket组件主要作为服务器端的套接字管理器使用。它封装了服务器端的套接字。在打开套接字后,服务器端就处于监听状态,在接收到其他计算机的连接请求之后,与客户端建立连接,创建一个新的套接字,用于和客户端互相传数据,此时TServerSocket组件则继续监听客户端的连接。 下面将简单地介绍一下TServerSocket组件的主要属性、方法和事件。 1.属性 ●Active:设定TserverSocket是否处于打开,并处于监听状态。 ●SeverType:设定TServerSocket按阻塞式还是非阻塞式模式工作方式。 ●Port:服务器端口。 ●Service:服务器端提供的服务。 ●Socket:连接所使用的Socket。 ●TreadCacheSize:允许客户连接的最大数值。 2.方法 ●Create:创建一个TServerSocket 对象。 ●Destroy:释放一个TServerSocket对象。 ●Open:打开 TServerSocket 并开始监听,等同于将Active属性设为True。 ●Close:关闭 TServerSocket ,断开与客户端连接,等同于将Active属性设置为False。 3.事件 ●OnAccept:当有客户端请求连接时,该事件被触发。 ●OnClientConnect:当有客户端的连接请求被接受并且客户端的连接建立时,该事件被触发。 ●OnClientDisConnect:当有客户端的套接字被关闭时,该事件被触发。 ●OnClientError:当与一个独立的客户端建立、使用、断开出现错误时,该事件被触发。 ●OnClientRead:当服务器应该从某一个与客户端连接的套接字读取数据时,该事件被触发。 ●OnClientWrite:当服务器应该给某一个与客户端连接的套接字发送数据时,该事件被触发。 ●OnGetSocket:当服务器端应该创建一个TServerSocket 对象已用于和一个客户端的连接时,该事件被触发。 ●OnGetThread:当服务器应该创建一个新线程以用于和一个客户端的连接时,该事件被触发。 ●OnListen:当服务器进入监听状态时,该事件被触发。 ●OnThreadEnd:当与一个客户端的套接字连接终结,并且相对应的通信线程也将结束,该事件被触发。 ●OnThreadStart:当与一个客户端的套接字连接建立完毕,并且相对应的通信线程也将开始,该事件被触发 |
|