最近在网上不断的看到有人问如何用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
当向服务端发送数据的时候产生此事件。
分享到:
相关推荐
builder C++ 6.0 TCP/IP通信小助手
本篇文章将深入探讨如何使用C++来实现一个基于TCP/IP的服务器程序,以及在这个过程中可能遇到的关键知识点。 首先,TCP(传输控制协议)是面向连接的、可靠的协议,它确保数据包按照正确的顺序传输且无丢失。而IP...
本实例“比较完整的TCP/IP通讯实例”提供了一个全面的参考,涵盖了Server端和Client端的编程实现,适用于开发者根据自身需求进行扩展。 TCP/IP协议栈分为四层(在OSI七层模型中对应为五层):应用层、传输层、网络...
用C++编写的基于TCP/IP的Modbus网络通讯工具源码,据参考价值。
库卡(KUKA)机器人TCP/IP通讯是工业自动化领域中的一个重要知识点,它涉及了现代机器人控制技术、网络通信协议以及编程接口等多个方面。在这个专题中,我们将深入探讨如何利用TCP/IP协议与KUKA机器人进行高效、稳定...
在KEIL中,开发者可以编写、编译和调试TCP/IP通信相关的代码。确保代码无误是项目成功的关键步骤,因此,描述中提到的"编译,无错误"表明代码已经过验证,可以正常运行。 项目中的"MDV-STM32F107-TCPnet-examples-...
本项目以"tcp/ip通讯方式实现聊天源码"为主题,通过编写客户端和服务器端的代码,展示了如何利用TCP/IP协议进行实时的点对点通信。 在TCP/IP协议族中,TCP(Transmission Control Protocol)是传输层的主要协议,它...
在C++中,使用MFC(Microsoft Foundation Classes)库可以简化TCP/IP编程。MFC封装了Windows套接字(Winsock)API,提供了一种面向对象的方式来处理网络通信。因此,`MFC; c++; TC`这三个标签暗示了我们将使用MFC的...
总之,C++ TCP/IP编程涉及网络通信的核心概念和实用技巧,包括套接字API的使用、TCP连接的建立与维护、数据的发送与接收等。结合实际的代码示例,开发者可以构建出稳定、高效的网络应用程序,满足各种复杂的需求。在...
TCP/IP通讯源码是计算机网络通信领域中的一个重要组成部分,它主要涉及如何利用Socket接口实现客户端与服务器之间的数据传输。在本示例中,我们聚焦于一个基于MFC(Microsoft Foundation Classes)的TCP/IP Socket...
TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网上最广泛使用的通信协议栈,它定义了数据在网络中的传输方式和规则。TCP/IP模型通常分为四层,分别是应用层、传输层、网络层和数据链路层,每个...
在本项目中,"c++ tcp/ip, Modbus tcp/ip 通讯,源码"涵盖了两个主要部分:标准的TCP/IP通信和基于Modbus协议的通信。 首先,TCP/IP通讯是指利用传输控制协议/因特网协议进行数据传输的过程。TCP是一种面向连接的、...
8. **编程与调试**:使用IAR开发环境,开发者需要编写C或C++代码来配置TCP/IP协议栈、设置网络参数、建立连接、发送和接收数据等。调试过程中,可以利用IAR的调试工具查看内存、变量状态和网络通信过程。 9. **安全...
标题中的“自己开发的一个TCP-IP通讯的小程序”指的是作者使用编程语言(在这个案例中是Visual C++ 2010,简称VC2010)编写的一个小型应用程序,该程序实现了TCP/IP协议栈的基本功能,允许用户进行数据的发送和接收...
这个项目的核心是设计一个用户友好的图形用户界面(GUI)用C++编写,并集成TCP/IP协议进行实时聊天。在C++中实现GUI通常会用到Qt、wxWidgets、GTK+等库,这些库提供了丰富的控件和功能,便于构建美观且功能完善的...
本资料主要探讨的是如何使用C++编程语言来实现TCP/IP协议栈,特别是与s7600硬件平台相关的实现细节。下面将对这个主题进行深入的阐述。 首先,TCP/IP协议栈包括四层(按照传统分层模型):应用层、传输层、网络层和...
【标签】"server_tcp/ip tcp_client tcp/ip_c client_server tcp_ip_c++" 显示了相关技术关键词,包括服务器端的TCP/IP编程、TCP客户端、TCP/IP的C语言实现、客户端-服务器架构以及TCP/IP的C++实现。虽然标签中有...
【标题】"基于TCP/IP的QQ局域网服务端程序设计"揭示了这个项目的核心,即构建一个使用TCP/IP协议栈的局域网内QQ服务端应用。TCP/IP(Transmission Control Protocol/Internet Protocol)是互联网上广泛采用的一组...
TCP/IP服务器是网络通信中的重要组成部分,它使用TCP/IP协议栈来接收和发送数据。在C++编程中,实现一个TCP/IP服务器涉及到网络编程的基本概念和技术。以下是对这个主题的详细解析: 1. **TCP/IP协议栈**:TCP/IP...
10. **测试和验证**:完成代码编写后,需要在实际设备上进行测试,确保程序能够正确地与EtherNet/IP设备通信,包括数据的发送和接收、命令的执行等。 总之,开发支持EtherNet/IP的C++程序是一项涉及多方面知识的...