动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
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/C++教程 ]的信息



本月文章推荐
.C语言教程第二章: 数据类型.
.想成为嵌入式程序员应知道的0x10.
.使用Eclipse3.01 + MinGW3.1配置.
.COM组件设计与应用之实现多接口.
.C语言常量与变量.
.C++ Builder 初学问与答(七).
.编程实现自动弹出和关闭CD托盘.
.一个简单的链表程序.
.C++数据结构学习:二叉树(1).
.C++中指针的使用艺术.
.我的"欢乐颂"面世了.
.俄罗斯方块大全.
.深入理解C++中的mutable关键字.
.《c语言程序设计》第九章:预处理.
.常用端口大全.
.用BCB5的打包程序打包BCB6.
.Perform()与SendMessage()的不同.
.解析C语言中的sizeof.
.Delphi中带缓存的数据更新技术.
.轻轻松松从C一路走到C++系列文章.

TServerSocket和TClientSocket的使用

发表日期:2008-3-8 |



  在网络编程中,WinSocket API编程是最基本,也是最麻烦的地方(说句不怕影响形象的话,我对此就是一知半解)。但是,假如你是使用C++Builder作为编程平台,你就偷着乐吧,有了BCB,菜鸟变高手!:-)

在BCB中,TServerSocket和TClientSocket涵盖了基本的WinSocket编程,其中TServerSocket作为服务器方使用,TClientSocket作为客户端使用,这两个组件本身并不提供Socket连接,但是他们都有一个Socket属性,这个属性才提供了Socket连接。下面就先向大家介绍一下这两个组件常用的方法属性,然后在通过一个例子来看看这两个组件的使用。
1)TServerSocket
名称          类型             说明
Socket     TServerWinSocket 最重要的属性,提供Socket连接,事实上发送/接收数据都要靠这个属性.
Port       int              要监听的端口,假如在Service属性中指定了服务类型,此属性将被忽略.
Service    AnsiString       提供的服务,如HTTP、FTP等,假如在这里指定了服务类型,
                            Port将被忽略,因为各种服务都有特定的端口,如FTP:21、HTTP:80
ServerType TServerType      设置与客户连接的方式,取值为两个枚举常量stNonBlocking和
                            stThreadBlocking,stNonBlocking表示用非阻塞方式连接每一个客户
                            每个连接都在一个单独的线程中处理。并用OnClientRead()和
                            OnClientWrite()通知服务器端的Socker进行读写。stThreadBlocking
                            表示以阻塞方式连接客户,即以主动查询的方式可客户连接。
Active     bool             激活服务,相当于调用Open()方法。

OnAccept事件当有客户请求连接时触发
OnClientRead事件通知服务器去读取有关信息。OnClientWrite与此类似。

2)TClientSocket
名称        类型               说明
Socket      TClientWinSocket  同TServerSocket
Active      bool              同TServerSocket

Address     AnsiString        服务器的IP地址,如202.98.35.14
ClientType  TClientType       与服务器连接方式,取值为两个枚举常量ctNonBlocking,tBlocking。
                              ctNonBlocking表示非阻塞方式,ctBlocking表示阻塞方式,详见上例。
Host        AnsiString        要连接的主机名,如www.cpcw.com
Port        int               同TServerSocket
Service     AnsiString        同TServerSocket

OnConnect事件当连接时发生,OnConnecting、OnDisConnect与此类似
OnRead事件通知客户机去读取有关信息。OnWrite与此类似。

TServerSocket和TClientSocket只提供基本的服务器/客户机的连接,真正提供数据传输的是它们都有的属性Socket,它的类型分别是TServerWinSocket和TClientWinSocket,而TServerWinSocket和TClientWinSocket的父类都是TCustomWinSocket,下面我们就来看看TServerWinSocket和TClientWinSocket常用的属性和方法。

共同的属性方法(来源于TCustomWinSocket)
名称          类型          说明
Connected      bool         检查是否连接成功
LocalAddress   AnsiString   本地IP地址,与此类似LocalHost:本机域名,LocalPort:本机端口
RemoteAddress  AnsiString   另一端的IP地址,与此类似RemoteHost:另一端域名,
                            RemotePort:另一端端口
SocketHandle   int          只读,返回Socket对象的Windows句柄,调用WinSocket API函数会用到它。
Handle         HWND         Socket能够接受到的异步事件都是以Windows消息的形式发送给此句柄的。

Close()方法作为服务器,关闭所有连接;作为客户机,关闭自己与服务器的连接
SendText(AnsiString)方法发送一个字符串,
SendBuf(void* buff,int count)发送缓冲区buff中的count个字节,返回实际发送的字节数
SendStream(TStream* AStream)发送一个流到Socket中。
ReceiveText()从Socket中读取并返回一个字符串。
ReceiveLength()从Socket读取数据需多少字节的缓冲区。
ReceiveBuf(void* buff,int count)从Socket中读取count字节的数据到buff。

TClientWinSocket
TClientWinSocket只增加了一个ClientType属性,
用于决定与服务器的连接类型(参见TClientSocket->ClientType)。

TServerWinSocket


名称              类型说明
ServerType       服务类型,参见TServerSocket->ServerType。
ActiveConnection  int只读,返回当前活动的连接数。
Connection        TCustomWinSocket数组,索引n表示第n+1个连接,如Connection[0]表示第一个连接。

有了这些知识,我们就可以完成一些基本的WinSocket编程了,下面就结合一个简单的闲聊程序来看看具体的应用。
首先在窗体上放置以下VCL组件,并修改相应属性:
类型              Name          属性        Caption/Text        说明
TCheckBox      ckListen    监听当选取时,本程序作为服务器
TCheckBox      ckConnect   连接当选取时,本程序作为客户机
TEdit          edName      无名氏闲聊时所用的名字。
TBitBTn        bbtSave&S   保存单击时保存谈话内容
TBitBtn        bbtClose&C  关闭单击时关闭此窗口(设置Kind=bkClose)
TEdit          edTalk     在此输入谈话内容
TMemo   &nb
上一篇:Turbo C 2.0 使用指南 人气:603
下一篇:UNIX 萤幕导向程式的发展利器 人气:204
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号