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

设计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看到这些字串。结果证明我们成功了!
得到在内存中运行的所有应用程序的handle-Delphi资料 调用控制面板项目大全-Delphi资料 动态改变当前显示模式-Delphi资料 动态改变屏幕分辨率-Delphi资料 动态建立不常用的对象-Delphi资料 对控制面板进行操作-Delphi资料 返回程序执行参数-Delphi资料 防止 Win95 显示严重错误-Delphi资料 改变操作系统日期-Delphi资料 改计算机名-Delphi资料 关闭 Windows-Delphi资料 关闭外部应用程序-Delphi资料 监视剪贴板内容-Delphi资料 检测磁盘是否变化-Delphi资料 检测驱动器容量-Delphi资料 检查驱动器是否就绪:-Delphi资料 建立简单的任务栏应用程序-Delphi资料 将程序放在Windows启动中-Delphi资料 将光标限制在某区域-Delphi资料 将文件放入回收站-Delphi资料 禁止用户切换任务-Delphi资料 控制面板大全-Delphi资料 控 制 系 统 菜 单-Delphi资料 拦截消息处理过程-Delphi资料 利用API函数开发DELPHI程序三例 利用Hook技术实现键盘监控-Delphi资料 利用浏览窗口 DragDrop 任意文件-Delphi资料 利用未公开函数实现Shell操作监视-Delphi资料 妙用Delphi的标识号 判断Windows类型和版本-Delphi资料 判断一个程序是否dos版本:-Delphi资料 listview内拖动问题 一个简单的问题??? sql server的SERVER端效率问题 VB6如何实现换肤功能 如何用对话之外的其它按钮控制对话框的关闭和打开 ! 关于picture的问题 算法与数据结构 寻找关于Dsound,Dplay方成的书籍或方档!! 如何在xsl中使用setTimeout()而得到渐显的效果? 在外面工作,做底层有钱途吗? 关于form的简单问题 搞过用TurboC开发图像,不知道转VC困不困难 有谁知<<终极杀阵>>游戏(Project IGI)第四回合怎玩的? 不知是否荒唐,大虾请 如果大家有问题告诉我(anjie@zj.soim.com) 如果大家有问题告诉我(anjie@zj.soim.com)一起讨论吗 想跟我交朋友anjie@zj.soim.com tc++3.0如何编写读鼠标程序(急) 都进来看看,程序员的下场... 各位高手,小弟问一个傻问题:怎么在播放一个AVI的时候用自定风格的滑块控制? 我上次在CSDN 上看到有人发贴子说自己写操作系统,我现在有个朋友也在写,想和他联系,但是我现在找不到那个贴子了, 有谁记得那个人的名字或贴子的位置请说.谢谢. 求助:打开网上邻居很慢为什么? 问一个蠢问题:控件何时获得焦点 请问一下哪里再收购软件呢? 请问一下在哪里可以找到收购软件的公司呢? 想作一个DOS程序,实现多台电脑间通过网卡传输文件. 辞职信 application.initialize完成了什么 高手来帮忙啊~ 看看java的魅力 如何通过自制程序的编辑框向现有一般应用程序编辑框传送内容? 窗口执行顺序问题,请多帮助,谢谢 如何自动取得server的日期和时间 怎样让文件指针指到文件末尾,必须skipline一行一行跳吗? 我想在菜单前添加图标,使用Bitmap属性但是为何只能载入*.bmp文件而不能使用*.ico文件,我只有*.ico的图标,请问该如何解决。 有新建一个文本文件并给其命名的函数吗,怎么用 我还真不懂呀? 这个COLTYPE是怎么用的呀?你说它怎么得到表中字段的类型呀? 有关存储器(ram,rom)的编址问题。以及32位或更多位芯片的问题。 一些汇编问题。想来问bcb的兄弟{bcb里好象有不少汇编高手} 救命:在安装了sco openserver之后,系统不能启动,先前安装的win98和win2k也不能。 请问如何进行URL译码??? 请问怎样截取一个string中的一段? 请问delphi做的exe最小可以到多少?怎么做? 我想请问一下WINGATE的具体怎样在WIN2000服务器版中进行设置。 ASP的同志们,能不能留一下QQ号码? 请问何处有破解ACCESS2000的程序或源代码呢? 请问要在TEdit.text组件文本串中找出当前光标在第几个字符上怎么办?谢谢! 请问关于dbImage控件的使用方法? 关于HDC及双缓冲的问题? xxxbird(*说你行,你就行,不行也行*),来领“我遇到几个怪问题。。。。。。”中的分 为什么ASP没法向SQL Server中写入数据?代码什么地方错了 如图,AB与AC是两条互相垂直的直线,圆O的半径是15厘米,弧AEB是以C为圆心,AC为半径的圆弧,求阴影面积. 如下图,三个半径都是2cm的圆两两相交圆心,阴影部分的面积是多少平方厘米?画的不是很标准,看得懂就行,打得好的另加悬赏 如图,半圆内的△ABC的面积是80平方厘米,BD长8厘米,求阴影部分的面积. 在以O为圆心,以半径为4厘米的圆O内,以4为直径画四条半圆弧,求团中阴影部部分的面积 如图,外圆的半径是Rcm,内圆的半径是rcm,四个小圆的半径都是2cm,则图中阴影部分面积是多少?急不要用^这个符号,我看不懂 半圆o内的三角形ABC的面积是80平方厘米,BD=8厘米.求阴影不分面积. 如图16,AB与CD是两条垂直的直径,圆O的半径为15厘米弧度AEB是以C为圆心,AC为半径的圆弧,求阴影部分面积用小学的方法算 一个直径为6分米的半圆,里面有一个直角三角形,求三角形外阴影部分面积. 如图,半圆内三角形ABC的面积是24平方厘米,高BD是4厘米,求阴影部分面积是多少平方厘米. 如图,两个四分之一圆弧的半径分别是2和4,ABCD是长方形.求:两块阴影面积的差.追加分TUT 急!一个半圆,内有直角三角形,求阴影部分的面积 右图中BC是半圆的直径,图中阴影部分1的面积比2的面积少5.12平方厘米.AC长多少厘米?(BC等于8厘米) 如图,将半径为4cm的圆形纸片折叠后,圆弧恰好经过圆心O,折痕为AB,则图中阴影部分的面积为 已知直角三角形ABC三边分别为6.8.10,分别以它的三边为直径向上作三个半圆,求阴影部分的面积 下图的比例尺是1:500,在图上量得长是15cm 宽是8cm ,求阴影部分的实际面积是多少? 一个环形,内圆直径8厘米,环宽2厘米,环形面积( )平方厘米 以三角形的三个顶点为圆心,以一厘米为半径在三角性内画圆弧,那么图中阴影部分的面积总共为多少? 求阴影部分的面积三角形空白是个直角三角形半圆直径6cm. 一个环形零件 ,它的外直径是26厘米,这个零件环宽8厘米,这个环形零件的面积是多少? 四个半径都是8cm的圆的位置如图所示,你能求出阴影部分的面积吗?上面俩圆下面俩圆然后四边连起来不是连成正方形半径相连就行除了四个圆其它的都是阴影部分 下图中等腰直角三角形的腰长是6厘米,求阴影面积的面积 一个环形零件的外圆的直径是40厘米内圆的半径是8厘米这个零件的面积是多少平方厘米 长为8cm,宽为6cm的长方形内,分别以长和宽为半径画1/4圆,如下图所示,求阴影部分面积? 等腰直角三角形的一腰长是8厘米以它的两腰为直径分别画了两个半圆那么阴影部分面积共有多少平方cm 一个环形,外圆半径是8厘米,内圆直径是10厘米,环形的面积是多少平方厘米? 图中圆的半径为5厘米,求阴影部分的面积. 如图,等腰直角三角形的一腰的长是7厘米,以它的两腰为直径分别画了两个半圆,那么阴影部分的面积共有多少 一个圆环,内圆直径是3厘米,环宽8厘米,圆环的面积是多少?算式 图中圆的半径为5厘米,求阴影部分面积. 如图是有一个直径为a的半圆和一个腰长为a的等腰直角三角形组成的图案,求阴影部分的面积 一圆环的外圆直径是8厘米,内圆环半径是3厘米,此圆环的面积为多少平方米 如图,最大圆的半径为5厘米,试求阴影部分的面积和要求写清过程 , 这是七年级第一学期的数学. 如图,BCDE是平行四边形三角形ABC是直角三角形,BC=8厘米,AC=7厘米,阴影部分面积比三角形AGF的面积大12CM,图片1求AC的长? 一个圆环内半径为8厘米,环宽6厘米,这个环形的面积是多少平方厘米?大圆半径比小圆半径大6厘米,小圆直径与大圆直径的比是1:4,则大圆的面积比小圆面积大多少平方厘米? 图中,每个圆的半径是5厘米,求阴影部分的面积. 右图,ABC为等腰直角三角形,D为半圆的中点,BC直径长为8厘米,求阴影部分的面积. 一张圆形纸片的半径是8厘米,在它的中间剪下半径是3厘米的圆,纸片剩下的一个部分是一个圆环.圆环面积? 三个半径为1的等圆两两外切,那么图中阴影部分的面积为 在图中,△ABC与△ADE都是等腰直角三角形,BC长8cm,DE长4cm,求阴影部分的面积.要有算式,快~注:BC是△ABC的最长的边,DE是△ADE的最长的边 一个圆环,外圆半径是8厘米,内圆半径是5厘米,圆环面积是多少平方厘米要快!圆环面积是( )平方厘米? 两圆的半径为1厘米,且图中的两块阴影部分的面积相等,那么两个圆心的距离是多少? 图中△ABc与ADE都是等腰直角三角形,BC=8厘米,ED=4厘米,求阴影部分的面积. 一个环形铁片,内直径是8厘米,外直径10厘米.求面积? 如图,外圆半径是Rcm,中圆半径是rcm,其余四个圆半径相等,则图中阴影部分的面积是多少? 在下图,三角形ABC与三角形ADE都是等腰直角三角形,BC长8厘米,DE长4厘米,阴影部分的http://tg5a39.mail.163.com/js3/main.jsp?sid=qAlTrsGGRaJSzSVkKgGGrgOwtgKKJtvg里面的附件就是图形。要快,越快越好 用户名:ty.p 一个环形,外圆半径是8厘米,内圆半径是5厘米,环宽是多少厘米,环形的面积是多少平方厘米? 如图,外圆的半径是Rcm,内圆的半径是rcm,四个小圆的半径都是2cm,则图中阴影部分面积是多少? 三角形ABC与三角形ADE都是等腰直角三角形,BC长8厘米,DE长4厘米.求阴影部分的面积.请详细说明每一步算下什么. 一个环形,外圆的半径是8厘米,内圆的半径是5厘米,环形的面积是? 一个半径为根号二的圆过一个半径为2的圆心,则图中阴影部分的面积为多少?图自己画,是月牙形的!最好两天之内有回复! 一个长方形长10厘米,宽8厘米,里面有一个为5厘米的半圆,其余部分为阴影部分,求阴影部分面积. 一个环形外圆的半径是8厘米,内圆的半径是5厘米,环形的面积是()平方厘米 矩形ABCD中,AB=1,AD=根号2.以AD的长为半径的圆A交BC于点E,则图中阴影部分面积为? 如图二所示,ABCD是一个长方形,长是8厘米,阴影部分的面积是()平方厘米?圆没画好!求阴影! 一个环形,外圆半径是8厘米.内圆半径是5厘米,这个环形的面积是多少 如图,圆o的半径为2,a是圆o外一点,ab切圆o于点b,ao交圆o于点c,ab=2根号3,求图中阴影部分的面积 一个长方形里有一个半圆,长方形的长是8厘米,求阴影部分面积 一个环形,内圆直径8厘米,外圆半径5厘米,环形面积是多少平方厘米? 如图所示外圆半径是Xcm,内圆半径是rcm,四个小圆的半径都是2cm,则图中阴影部分的面积是多少?(2)当X=10,Y=5时,阴影部分的面积是多少?错了,四个小圆半径为3cm 下图中等腰三解形的腰长8厘米,求阴影部分的面积
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn