如何编写用TCP/IP的通讯程序

2016-02-19 20:56 6 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐如何编写用TCP/IP的通讯程序,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

    最近在网上不断的看到有人问如何用BCB的TServerSocket和TClientSocket进行编程的问题,所以决定把我的一些编程经验告诉给大家,让大家能够尽快的把握他们的用法。
  
  首先要讲一下他们的一些设置(属性):
  TServerSocket 的几个属性
  Active       
      是否是工作状态,可以把它设置为ture或false来启动和停止侦听。
  Port
      本机侦听的端口,可以设置为一大于1024的数;
  ServerType   
      服务端的工作方式,有两个选择,一个是stNonBlocking 非阻塞方式,一个是stThreadBlocking线程阻塞方式,默认是非阻塞方式。用非阻塞方式编程比较简单(我个人认为),用阻塞方式对每个连接必须自己用线程来控制收发。
  ThreadCacheSize  
      缓冲的线程个数 当ServerType是stThreadBlocking时有效。
  TClientSocket 的几个属性
  Active      
      是否是工作状态,可以把它设置为ture或false来同服务端建立或断开连接。
  Host    
      服务器(ServerSocket)的计算机名,是一个字符串
  Address
  服务器(ServerSocket)的IP地址
  ClientType
     客户端的工作方式一种是ctNonBlocking非阻塞方式,一种是ctBlocking阻塞方式,默认是非阻塞方式
  Port
  同服务端(ServerSocket)连接的端口,这个端口就是ServerSocket的侦听              端口
  在设置ClientSocket的(Host)主机名和设置(Address)IP地址是等效的,但设主机名需要网络具有DNS(域名解析服务)服务器,而且设主机名要比设主机的IP地址连接的速度慢一些。建议用Address来同ServerSocket进行连接。
  
  设置好所有的属性后,ServerSocket控件就可以通过将它的Active属性置为true来进行侦听了。ClientSocket可以通过设置它的Active属性来同ServerSocket进行连接。连接成功就可以进行通讯了。在这个过程中会产生一些事件,下面说说他们各自的事件。
  
  TServerSocket的几个事件
  OnAccept
      当一个客户同服务端连接成功后产生这个事件,产生这个事件后这个连接就可用了,可以对这个客户进行发送和接收数据。
  OnClientConnect  
  当一个客户正在同服务端建立连接的时候产生此事件,在这里你可以决定是否接受这个连接。
  OnClientDisconnect
  当一个客户同服务端的连接断开的时候产生此事件,你需要在这里进行一些处理,如从连接列表中清除次连接释放内存等。
  OnClientError
  当客户同服务端出现错误时产生此事件,在此事件中你可以通过设置ErrorCode = 0来屏蔽系统的错误提示。这样就可以避免讨厌的英文错误了。根据ErrorEvent的不同的值来得知发生了什么错误,它有一下几中错误类型
  eeGeneral   未知错误
  eeSend    发送数据出现错误
  eeReceive   接收数据出现错误
  eeConnect   客户请求连接时出现错误
  eeDisconnect 客户断开连接时出现错误
  eeAccept     接受一个客户时发生错误
      一般来讲,当发生错误的时候这个客户的连接就已经不可用了,要对这个客户进行连接失败处理。
  OnClientRead
  当服务端收到客户端发来的数据的时候产生此事件。接收客户端的数据都在这里进行。
  OnClientWrite
  当服务端发送数据的时候产生此事件。
  
  TClientSocket的几个事件
  
  OnConnect
  同服务端(ServerSocket)连接成功后将产生此事件,产生此事件后才说明这个连接可用了,这时才可以向ServerSocket发送数据。
  
   OnConnecting
  正在同服务端进行连接是产生此事件。
  OnDisconnect
  同服务端的连接断开后产生此事件,产生此事件后ClientSocket的Active属性就为false了,这时这个连接就不可用了,必须重新进行连接才能向服务器发送数据。
  OnError
  当Socket发生错误时产生此事件,这个事件的意义和ServerSocket的Error事件完全一样,只是它没有eeAccept错误。
  OnRead
  当接收到服务端发来的数据后产生此事件。
  OnWrite
  当向服务端发送数据的时候产生此事件。
  
  上面介绍了一下这两个控件的基本属性和事件,在把握一些方法就可以用这两个控件进行编写通讯程序了,今天写的有写累了,改天在写它的方法并具体使用这两个控件编写一个通讯程序,有两个选择,一个是局域网的聊天程序,一个是局域网内的控制程序,大家喜欢那一个呢?给点建议吧.

来源:http://www.tulaoshi.com/n/20160219/1624851.html

延伸阅读
标签: Delphi
  如果你想自己用Delphi编写一个打印程序,那么,下面这些技巧或许对你有所帮助。 1.获娶显示当前打印机的分辨率 Windows下的打印分辨对打印程序有着至关重要的作用,如果你想知道打印机的分辨率,请在程序中加入一行:ShowMessage(′水平分辨率′+inttostr(GetDeviceCaps(printerHandle,LOGPIXELSX))+chr(13)+′垂直分辨率:′+...
  TCP/IP 简史 近年来,随着“传输控制协议/网际协议(TCP/IP)”套件的广泛使用,它已经成为网络通信中事实上的标准。这绝大部分要归功于因特网的迅猛发展以及对在不同平台、设备和操作系统中以它们都理解的“语言”来共享数据的需要。让我们首先了解 TCP/IP 的历史。 在 20 世纪 60 年代后期,美国国防部(DOD)意识到其内部日渐突...
标签: Delphi
  当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步,同时也是很重要的一步,因为运行安装程序往往是用户做的第一步操作。 很多报刊文章介绍了许多如何利用installshield等工具软件来制作安装程序的方法,这种办法可以很快建立起较常见的安装模式,但用这种办法也有一些...
在TCP/IP 互联网时,经常会需要查询自己主机的IP地址和www服务器的IP地址。虽然,我们可以使用IPCONFIG 和PING 进行IP地址查询,但是如果在应用程序或APPLET中使用此命令会破坏我们应用程序界面。 为此本人使用JAVA 做了一个简单的程序可以直接查询自己主机的IP地址和www服务器的IP地址: // 文件名为 NetTool.java (注意:在JA...
如果要想获得远程的地址,需要用sendarp这个函数来实现。具体的代码如下:[DllImport("Iphlpapi.dll")]private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);[DllImport("Ws2_32.dll")]private static extern Int32 inet_addr(string ip);Int32 ldest= inet_addr("157.60.68.163");//目的地的ip...

经验教程

693

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部