说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

设计Chat程序 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
设计Chat程序 -VB资料
用WinSock设计Chat程序

摘要
  随着Internet的蓬勃发展,网络界面的交流使我们能够即时收到各地所发生的各项信息。我们在使用各种Browser浏览各网点时,只要Server能提供Chat(闲聊)的服务项目,我们就可以通过Browser所提供的Chat程序与网络上的其他使用者即时对谈及交流心得。本篇文章通过Visual Basic 5.0所提供的WInSock control,设计一个Chat应用程序。我们通过Client及Server之间的文件传输,可以了解Chat程序的工作原理。

WinSock control简介
  WinSock是windows系统提供的一种网络文件传输协议。以往我们使用WinSock设计程序时,必须调用系统提供的API来完成;但是在Visual
Basic中调用API,因涉及参数传递类型,用起来并不方便。Visual Basic 5.0 提供WinSock control简化我们的设计流程。它可以利用User Datagram Protocol(UDP)或Transmission Control Protocol(TCP),来设计网络的Client-Server 程序。
  TCP是一种Connection base的Protocol,在文件传输时会先行建立Link,通过Link可确保文件传输的正确性;UDP则是一种Connectionless的Protocol,它在传输文件时不会确保传输端的文件能够正确无误的传送到接收端,所以当我们使用UDP protocol时,我们通常要自己作接收确认的工作。
  UDP protocol看起来好像比较没效率,其实不然!UDP protocol有一个好处:当文件很小,或我们要做网络boardcast (广播)时,会比较有效率。 所以了! 当我们利用WinSock设计程序时,首先要依自己的需要,决定使用那一种protocol。本文将分别教您使用TCP及UDP Protocol来设计Chat程序。

  以TCP设计Chat程序

Step 1:找出Domain name及IP address
  在“我的电脑”中选择“控制面板”。Double click“网络”选项,选择“标识”,您将会发觉您的计算机名称、工作组名等信息。将它记录起来,我们稍后会用到。

Step 2:设计TCP Server程序
  在File选项中选New Project建立一个新的工程,在屏幕上会看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveXControl等,选Standard.EXE。
  接着在Project下选择Property属性选项,在General选项下将ProjectName改为TCP-Server,并将Form名称及Caption更改为Server。在屏幕的Form上加入一个WinSock control,取名为Tcps;加入两个TextBox control(Outtext、Intext),并在两个TextBox前加入两个label,分别将caption改为Outtext、Intext。

〈TextBox〉
Name
------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

〈Label〉
Caption
------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

  在Form_Load()中加入以下程序代码,这个动作是设置好我们Local的传输端口,并到接收的状态:
Tcps.protocol=0-scktcp protocol
Tcps.LocalPort = 1002
Tcps.Listen

  双击Tcps,在Tcps_ConnectionRequest(ByVal requestID As Long)中加入以下程序代码,这表示winsock接受了连接请求:
Tcps.Accept requestID

  双击Outtext到Outtext_change(),加入以下程序代码,当Outtext内容改变后,文件就会自动送出:
Tcps.SendData Outtext.text

  在Tcps_DataArrival(ByVal bytesTotal As Long)中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox中。
Dim S As StrIng
Tcps.GetData S
InText.Text = S

  这样我们就完成了Server端的设计。

Step 3:设计TCP Client程序
  在File选项中选择New Project建立一个新的工程,在屏幕上看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等。选Standard.EXE。接着在 Project下,选择Property属性选项,在General选项下,将Project Name改为TCP-Client,并将FORM名称及Caption更改为Client。
  在屏幕的Form上加入一个WinSock control,取名为 Tcpc,将protocol property设置成 0-scktcp protocol,加入两个TextBox control(Outtext、Intext),并在两个TextBox前加入两个Label,分别将其Caption改为Outtext、Intext。接着放入一个Button(button1)并将Caption 改为Connect。

(TextBox)
Name
-----------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

(Label)
Caption
--------------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

〈Button〉
Name             Caption
--------------------------------------------------------
Button1(执行建立session命令) Connect

  在Form_Load()中加入以下程序代码,这个动作是设置好我们Remote所要连接的传输端口及其网络名称。我们要连接的计算机网络名称为DAVID:
Tcpc.RemoteHost ="David"
Tcpc.RemotePort=1002

  双击Outtext到Outtext_change()加入以下程序代码,当Outtext内容改变后,文件会自动送出:
Tcpc.SendData Outtext.text

  在Tcpc_DataArrival(ByVal bytesTotal As Long)中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox 中。
Dim S As StrIng
Tcpc.GetData S
InText.Text = S

  这样就完成了Client端的设计。

Step 4:测试TCP Chat程序
  分别执行Server及Client程序,这时在Client的屏幕上显示In及Out TextBox及一个Connect Button;在Server屏幕上显示In及Out TextBox。
  我们按Client程序Connect button建立连接,连接建立成功后,我们可尝试在Client的Outbox 中输入一些字符串:Hello nice to meet you!我们将在Server端的Inbox看到这些字串。 接着我们在Server的Outbox也输入一些字符串:Nice to meet you, too! 我们将在Client 端的Inbox看到这些字符串。结果证明我们成功了!
-----------------------------------------------------------------

用UDP设计Chat程序

Step 1:设计第一个UDP(UDP1)程序
  在File选项中选择New Project建立一个新的工程,屏幕上会看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等,这时选Standard.EXE。接着在Project下选择Property属性选项,在General选项下将Project Name改为UDP1,将protocol property设置成0-udptcp protocol,并将Form名称及Caption更改为UDP1。
  在屏幕的Form上加入一个WinSock control,取名为UDP1;加入两个TextBox control ( Outtext、Intext),并于两个TextBox前加入两个
Label control,分别将Caption改为 Outtext、 Intext。

(TextBox)
Name
-----------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

(Label)
Caption
-------------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

  在Form_Load()中加入以下程序代码,这个动作是设置好我们要连接的远端输入端口为 1001,并将输入端口设为1002。
UDP1.RemoteHost = "DAVID"
UDP1.RemotePort = 1001
UDP1.BInd 1002

  双击Outtext到Outtext_change(),加入以下程序代码,当Outtext内容改变,文件会自动送出:
UDP1.SendData Outtext.text

  在UDP1_DataArrival(ByVal bytesTotal As Long)中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox 中。
Dim S As String
UDP1.GetData S
InText.Text = S

  这样我们就完成了UDP1的设计。

Step 2:设计第二个UDP(UDP2)程序
  在File选项中选New Project建立一个新的工程,屏幕上会看到许多选项,如ActiveX Document.EXE、 ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等,这时要选Standard.EXE。接着在 Project下,选择Property属性选项,在General选项下,将Project Name改为UDP2,将protocol property设置成0-udptcp protocol,并将Form名称及Caption更改为UDP2 。
  在屏幕的Form上加入一个WinSock control取名为UDP2 ,加入两个TextBox control ( Outtext、Intext),并在两个TextBox control前加入两个Label control,分别将Caption改为Outtext、Intext。

(TextBox)
Name
-----------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

(Label)
Caption
--------------------------------------------------------
Outtext(输出文件)
Intext(输入文件)

  在Form_Load()中加入以下程序代码,这个动作是设置好我们要连接的远端输入端口,设置为1002,并将输入端口设置为1001。
UDP2.RemoteHost = "MARY"
UDP2.RemotePort = 1002
UDP2.Bind 1001

  双击Outtext到Outtext_change()加入以下程序代码,当Outtext内容改变,文件就会自动送出:
UDP2.SendData Outtext.text

  在UDP2_DataArrival(ByVal bytesTotal As Long) 中加入以下程序代码,这是用来把所接收的文件显示在Intext这个TextBox 中。
Dim S As StrIng
UDP2.GetData S
InText.Text = S

  这样我们就完成了UDP2的设计。

Step 3:测试UDP Chat程序
  分别执行UDP1及UDP2程序。这时UDP1的屏幕上显示In及Out TextBox;UDP2屏幕也显示In及Out两个TextBox。我们在UDP1的Outbox中输入一些字符串 I want talk to Mary,我们将在UDP2端的Inbox看到这些字符串。接着我们在UDP2的Outbox也输入一些字符串This is Mary speaking!,我们将在UDP1端的Inbox看到这些字串。结果证明我们成功了!
Android Permission列表,ADT 0.9.9 bug Android Theme和Styles内部定义解析 Android平台下图表绘制相关方法 Activity类的runOnUiThread方法你用过吗 Android上鲜为人知的UI控件介绍和使用 获取Android手机上的图片和视频缩略图 Android JSON解析示例代码 Android ANR介绍与避免 Windows Phone 7 SDK完善度不如Android m3 Android中使用定时器TimerTask类介绍 控制Android LED灯颜色代码 Android应用Icon大小在不同分辨率下定义 Android控件美化Shape你会用吗? Android屏幕截图之View方法 Android开发者应该保持以下特质 Android Widget开发模板 Zipalign使用方法-SDK中的APK文件优化工具 Android蓝牙控制之2.X或以上 Android数组排序常见方法 使用OpenGL开发一个指南针 Android自绘GridView控件 Android平板开发注意事项 Android控件TextProgressBar进度条上显文字 Android内存管理-SoftReference的使用 反射在Android开发中的利弊 intent调用代码总结二 Android缩略图类源代码 Android多人项目开发指导 AsyncTask对比Thread加Handler Android Drawable叠加处理方法 android.os.Debug调试工具使用方法 高分求教,MyODBC!!!!!!!!!!!!!!!!!! vc++ 写了一个vb控件,如何让客户端打包下载 关于如何在linux下运行xml的程序的问题 急!请问那为大虾知道wast这个软件啊? 求救:用VC怎么调试程序(怎样设断点) 各位高手:>>>送分问题.....谢谢!! 关于安装程序.... 在Form上放一个Memo,响应Form的onMouseMove时,为什么在Memo上移动鼠标,事件中的传递的参数Sender总是Form而不是Memo? tc++中怎样使用bitmap 送分了!! bcb报表中只有richedit可以自动折行,如何解决? 如何把asccii字符串转化为unicode形式的字符串??? 高手请帮帮我吧 打印RichTextBox 的内容时,如何设置页边距? 可变参数的函数 想找个老师帮我提高 要做一个dll需要在不同的平台调用该如何声明? 硬盘分区表是哪个文件? 我准备写篇有关软件企业的管理的文章,谁愿提供建议和材料,谢谢! 急!如何在VB中控制扫描仪,并按要求取得图象? 高手请指点 [给分]请global_boy(准备蒸发)进来领分!帮助解决Win2000启动选项的配置..原贴:http://www.csdn.net/expert/topic/592/592163.xml?temp= 请教高手!如何通过文件名获得其图标 MCSE?! 数据连接错误? 如何让datagrid绑定数据 ISAPI程序里输出的网页无法显示,大家救命! 请问如何在Jb6中使用中文字体,比如说宋体 HTTP 和 FTP 一个黑客问题? SQL 急的!谢谢大家帮忙!关于interbase与c++builder5的连接。 请教高手! 哪里有免费下载<thinking in c++>等图书的? 那位大侠懂在 VC 中用汇编??? 有会命名管道操作的高手吗 请教高手! 异步传送的问题? 如何杀死某个进程呢? 苦行僧与灌木丛来领分 如何把一个string转换成int delphi与Access ADO连接的详细设置? 请问能否用C#实现进程的完全隐藏? 创天中文VC6.0的问题????? 有谁知道类似WINDOWS98那个星空的屏保是如何实现的? 请各位大虾提供一些JAVA开发工具的下载网址 在Web Service中传递图像字段数据回客户端的问题!请教大侠! 买过深入浅出MFC的朋友请进~~~~~~ 会Java的究竟难不难找工作啊? 有什么方法可以让自己的机子有假的ip呢? 五年级作文让我感动的一件事700字 六年级看漫画写作文.我是个六年级的学生,今天我们语文考试了.作文时看漫画写作文.漫画是一个人踩在干裂的土地上(地球环境差到极点),对着一个只剩下树枝和树干的树作画,他没有按实 《谢谢你们给了我浓浓的母爱》初一作文500字左右 《这件事真让我感动》 作文 700字我要写的是在大雨中的一件令我感动的事情,最好是父母来接孩子放学的,谁有帮帮忙,星期一要交的,写得好加分, 语文六上第四单元看漫画写作文450字以上 兔子到底吃不吃蘑菇? 如何介绍社公园的一篇英语作文和介绍我的社区要3 5句 我的社区最主要 看漫画写作文,不可以是语文书上出现过的,500字 600字作文《那一次我很感动》的提纲? 妈妈买回一些梨,按计划天数,如果每天吃5个,则多出45个;如果每天吃7个,则又少9个。妈妈买了多少个梨 假如你是李华,某英语报社吸收中学生记者,请你写一封不少于120词的推荐信,(可以推荐你或者其他同学)...假如你是李华,某英语报社吸收中学生记者,请你写一封不少于120词的推荐信,(可以推荐 六年级上册第四单元漫画作文的题目最好有点吸引力 大学英语演讲ppt3分钟左右,内容新颖,吸引人,有图和文字.最好多几篇, 妈妈买回来一筐梨,按计划的天数,如果每天5个,则多6个,如果每天7个,则少8个,妈妈买回多少个梨?计划吃几天(列方程解) 初二语文下册课本作文(7篇600字作文 大学课前10分钟英语演讲PPT, 急求英语演讲PPT,内容不限,十来分钟长度,最好附带演讲稿 初二语文作文《最亲切的怀念》600字 开头已给出夜 静静地春夜 连空气都弥漫着温馨的气息 我坐在窗前 遥望星空 眼里溢满感动的泪水 急求英语演讲ppt 不要butterfly 有关森林防火的作文抒情的,600字左右,星期四要用 初二语文作文 以乐观为话题600字.急.明天就用了最好在16:00前 有加赏。。。。。 求一个大学英语演讲PPT~RT 关于森林防火的文章越快越好,要绝对原创,不能出现过的,400字,了了了了了! 9月25日考托福,tpo听力总是错10+,怎么办呀,求指导~笔记来不及记,记得不考,考的没有记,涉及背景知识的,听不懂,实力太差啦,只有半个月了,怎么办? 如果英语是大学4级的水平考托福大概能考多少分虽然说看到很多人说没什么关系 但是想知道一个大致的标准 我的托福听力第一次17分,第二次做了大概5套TPO,听了大概40篇听写,只提高了1分,请问我该如何提高听力我考听力的时候开始还好,越往后越听不懂最后只能猜,我的分数分布是 R21 L18 S20 W20, 小弟 TPO阅读错10道tpo7的阅读,前几天做的好紧张来着,就给错了10分进去,44才拿了34,但是ETS给的单子上市28分.这是咋回事、、.考完TPO有个成绩单,阅读是28分.好诡异啊. 什么是荤菜素菜 托福TPO听力 听写怎么听文章的脉络和main idea?具体步骤是什么? 今年12月22号考托福,做tpo阅读对一半错一半,听力只能对一小半,惨不忍睹~我该怎么办? 我大二过了四级后一直没看过英语,现在想出国需要考托福,应该怎么复习,希望大家给我点建议 有没有人有托福TPO的完整版模考软件啊?不是那种WORD或是PPT格式,是软件 作文那一次我很感动600字,要好点的,不要复制的! 目前大二下学期,过英语四级,打算在大三上学期结束考托福,具体该如何复习希望考过托福的谈一下个人亲身经验,好的小方法,推荐一下有针对性的好书,好网站,最好具体到平时该如何准备,我 托福TPO中的听力是不是每篇都要听写啊? 关于春节的作文,700字请你选择你们春节期间吃年夜饭的一二个情景写出亲情, 请问我得什么时候考托福比较好?我现大三,打算要读研吧,需要现在开始准备一年去考,先假设考上了会读研两年吧~读完之后有出国读phd的打算,如果今年八月考托福,会不会申请的时候托福成绩 英语作文介绍我的新朋友长什么样 兔子吃不吃蘑菇? 今年什么时候考托福? 要考托福朋友推荐给我的tpo小站怎么样? 兔子喜欢吃蘑菇吗?我以前养过一只兔子,记得动画片里经常有小白兔采蘑菇的剧情,所以我也洗了蘑菇擦干给它吃,但是它好像不是特别喜欢的样子,吃倒也是吃的.曾经一度以为兔子最最奢侈的 一年时间考托福马上上高三,可是不想在中国念大学.想去美国.一年时间,努力学,托福能考出来么.给我提提意见. 还有几天就要考托福 做tpo几 兔子吃蘑菇吗 考托福什么时候准备最好? 还有20多天考托福了 但是阅读每次做TPO还是错5,6个谁能告诉我该怎么办 阅读怎么会成这样 之前第一次阅读只考了10分 有没有什么好方法 都没信心去考第二次了 呜呜 兔子吃蘑菇么? 明年考托福什么时候报名? 600字左右 求一篇英语作文,如下:假如你是新华中学学生李华,在最近举行的市高求一篇英语作文,如下:假如你是新华中学学生李华,在最近举行的市高中生英语口语大赛中获得了一等奖.某英语报社邀 以李华的名义写一篇英语作文你的美国笔友Tom准备到中国学习,他对中国的传统艺术非常感兴趣,希望了解中国学校在艺术课方面的安排.请根据以下提示内容,给Tom写一封80词左右的电子邮件,向 急需一篇关于理想的作文,我是初二的,作文要求700字以上,急..三个要求,文中一定要涉及到1 理想是什么2 怎样去实现理想3 为什么要有理想 小兔采蘑菇,晴天一天40朵,雨天一天24朵,一连8天共采240朵,这8天有几天是晴天?(要求分布列式计算)(要求分布列式计算) 妈妈买回一筐梨,按计划的天数,如果每天吃5个,则多出6个;如果每天吃7个,则少8个,妈妈买回多少个梨 假设你是湖南大学的学生李华,得知某英文报招聘兼职记者,你有意应聘,请按下列要点给报社写一封自检信1表示感兴趣;2知识面,英语水平,合作精神,相关经历;3希望得到回复.4 .100单词左右. 求一篇作文,题目是《那一次?》要600字以上! 感动历史人物作文 (700字)快! 看漫画写作文400字半个小时内交来 以《那一次,我履行了责任》为题写一篇作文!750字!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘