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:当与一个客户端的套接字连接建立完毕,并且相对应的通信线程也将开始,该事件被触发。