网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.关于C语言中图形模式的问题.
.通讯录的源代码(用链表实现).
.用DEF文件从DLL中导出C++类.
.技巧 多线程下的随机数初始化.
.C++箴言:用成员函数模板接受兼容.
.完整的读写函数.
.通用子目录文件显示方法.
.C++中类的数据成员的安全隐患.
.使用C++ Buider制作自绘画列.
.认识宏,C语言的万恶之首.
.C++中通过重载避免隐式类型转换.
.C/C++英/中,繁/简编程术语对照.
.Windows Sockets:带存档的套接字.
.VC Studio 使用技巧大全.
.eclipse 下用cdt插件开发c c++程.
.求从棋盘的坐下角到右上角的无环.
.C++中的EXIT与析构函数.
.图书管理程序.
.强大的语言——C入门.
.教你理解复杂的C/C++声明.

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

发表日期:2008-3-8


    最近在网上不断的看到有人问如何用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
当向服务端发送数据的时候产生此事件。

上面介绍了一下这两个控件的基本属性和事件,在把握一些方法就可以用这两个控件进行编写通讯程序了,今天写的有写累了,改天在写它的方法并具体使用这两个控件编写一个通讯程序,有两个选择,一个是局域网的聊天程序,一个是局域网内的控制程序,大家喜欢那一个呢?给点建议吧.
上一篇:高手讲解:探索C++的秘密之详解extern 人气:647
下一篇:打开C++ Builder菜单设计器 人气:516
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐