版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用vbwinsock控件创建tcp/ip客户机/服务器程序【全屏显示】作者:weidian-本站原创点击数:4282发表时间:2008-5-7编辑:sanzang winsock控件建立在tcp、udp协议的基础上,完成与远程计算机的通信。即使对tcp/ip不太熟悉的用户,使用该控件也可以在十几分钟内创建一个简单的客户机/服务器程序。下面我们对winsock控件的事件、方法、属性按其在程序中出现的顺序分别作详细的介绍,以便更好地理解程序源代码。 下面是winsock控件的相关属性,方法和事件。(略去一些暂用不到的)*属性-localhostname | 本地机器名localip | 本地机器i
2、p地址localport | 本地机器通信程序的端口(0端口65536)remotehost | 远程机器名remoteport | 远程机器的通信程序端口state | 连接的当前状态(文后有详细说明)protocal | 使用tcp或udp协议(这里我们选0-scktcpprotocal)-*方法-listenlisten方法用于服务器程序,等待客户访问。格式:winsock对象.listen connectconnect方法用于向远程主机发出连接请求格式:winsock对象.connect 远程主机ip,远程端口acceptaccept方法用于接受一个连接请求格式:winsock对象.a
3、ccept request idsenddata此方法用于发送数据格式:winsock对象.senddata 数据getdata用来取得接收到的数据格式:winsock对象.getdata 变量 ,数据类型 ,最大长度close关闭当前连接格式:winsock对象.close*事件-close | 远程机器关闭连接时触发connect | 连接建立好,可以进行通信时触发(客户端)connectrequest | 有请求连接到达时产生(服务器端)dataarrival | 有数据到达时触发error | 发生错误时发生sendprogress | 数据传送进度-服务器程序的实现过程是: (1)服
4、务器程序必须设置好localport属性,作为侦听端口,该值为一个整数(只要是一个其它tcp/ip应用程序没有使用过的值即可)。 (2)使用listen方法进入侦听状态,等待客户机程序的连接请求。 (3)客户机程序发出连接请求,使服务器程序产生connectionrequest事件,该事件得到一个参数requestid。 (4)服务器程序用accept方法接受客户机程序的requestid请求。这样,服务器程序就可以用senddata方法发送数据了。accept方法必须用上一步得到的requestid作为其参数。 (5)当服务器程序接收到数据时,产生dataarrival事件,参数bytest
5、otal包含接收到的数据字节数。在该事件中,可以用getdata方法接收数据。 (6)如果接受到close事件,则用close方法关闭tcp/ip连接。 客户机程序的实现过程是: (1) 客户程序设置remotehost属性,以便指定运行服务器程序的主机 名,该字符串可在“控制面板|网络|标识|计算机名”中查到。 (2) 设置remoteport属性,以便指定服务器程序的侦听端口。 (3)使用connect方法,向服务器提出连接请求。 (4)服务器接受客户机程序的请求,客户机程序产生connect事件,就可以用senddata方法发送数据了。 (5)当客户机程序接收到数据时,产生dataarr
6、ival事件,参数bytestotal包含接收到的数据字节数。在该事件中,可以用getdata方法接收数据。 (6)如果接受到close事件,则用close方法关闭连接。 winsock控件还有两个重要的属性,即protocol和state。protocol设定使用的协议是tcp还是udp:取值scktcpprotocol表示tcp, 取值sckudpprotocol则表示udp。因为winsock控件的缺省设置是scktcpprotocol,所以程序中并没有使用protocol属性。state属性反映的是当前tcp/ip的连接状态,取值如表1所示。 表1 winsock控件的state属性及
7、其描述 常数值描述sckclosed0缺省值,关闭 sckopen1打开scklistening2侦听sckconnectionpending3连接挂起sckresolvinghost4识别主机sckhostresolved5已识别主机sckconnecting6正在连接sckconnected7已连接sckclosing8同级人员正在关闭连接sckerror9错误先在一台计算机上运行服务器程序,此时窗口上只有一个“退出”按钮。 再在另一台计算机上运行客户机程序,在“连接”按钮右边的文本框中输入服务器的主机名后单击“连接”按钮。如果连接成功,则服务器和客户机程序窗口都会出现两个文本框。这时,两
8、端都可以在上面的文本框中输入文字,这些文字会立即在下面的文本框中出现。 服务器程序使用的控件如下: (1)command1:退出按钮; (2)textsend:发送数据文本框; (3)winsockserver: 服务器winsock; (4)textget :接收数据文本框。 服务器程序的界面如图所示。 服务器程序的源代码如下: private sub command1_click() end end sub private sub form_load() textsend.visible = false textget.visible = false winsockserver.local
9、port = 1001 winsockserver.listen end sub private sub textsend_change() winsockserver.senddata textsend.text end sub private sub winsockserver_close() winsockserver.close end end sub private sub winsockserver_connectionrequest(byval requestid as long) textsend.visible = true textget.visible = true if
10、 winsockserver.state sckclosed then winsockserver.close winsockserver.accept requestid end sub private sub winsockserver_dataarrival(byval bytestotal as long) dim tmpstr as string winsockserver.getdata tmpstr textget.text = tmpstr end sub 客户机程序使用的控件如下: (1)command1:退出按钮; (2)command2:连接按钮; (3)winsockc
11、lient:客户winsock; (4)text1:主机名文本框; (5)textsend:发送数据文本框; (6)textget:接收数据文本框; 客户机程序的源代码如下: private sub command1_click() end end sub private sub command2_click() winsockclient.connect end sub private sub form_load() textsend.visible = false textget.visible = false winsockclient.remoteport = 1001 winsock
12、client.remotehost = sccdsz end sub private sub text1_change() winsockclient.remotehost = text1.text end sub private sub textsend_change() winsockclient.senddata textsend.text end sub private sub winsockclient_close() winsockclient.close end end sub private sub winsockclient_connect() textsend.visible = true textget.v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 菊花活动策划方案
- 诚信促销活动方案
- 观看水门桥电影活动方案
- 语言阅读活动方案
- 《GB-T 1094.14-2022电力变压器 第14部分:采用高温绝缘材料的液浸式电力变压器》专题研究报告
- 足球之星活动策划方案
- 走进人物活动方案
- 过年跑步活动方案
- 跨年慰问活动方案
- 道路积雪清除活动方案
- 2025-2030高考培训行业市场需求调研及未来趋势分析与投资回报评估报告
- 2025年侨办事业单位招聘考试面试题及参考答案
- 2025年河北省政府采购评审专家考试测试题及答案
- 兽医行业面试题目及答案
- 形势与政策台湾问题课件
- 2025年CAAC无人机理论考试题库(附答案)
- 混凝土浇筑培训课件
- 人民调解法宣传课件
- 妊娠合并肺动脉高压的护理
- 2026年中考英语一轮复习:1600个必背词汇 话题记忆+默写本
- 2025年青少年科技创新比赛考核试卷及答案
评论
0/150
提交评论