您的位置:首页技术开发ASP技巧 → 用WinSock设计Chat程序转

用WinSock设计Chat程序转

时间:2004/11/7 4:02:00来源:本站整理作者:蓝点我要评论(0)

摘要



  随着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程序。

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看到这些字符串。结果证明我们成功了!




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案