利用Winsock控件创建的局域网聊天程序
- 格式:docx
- 大小:65.15 KB
- 文档页数:7
课程设计(论文)任务书信息学院专业计算机班级2009-2一、课程设计(论文)题目基于Winsock的简单聊天工具的设计二、课程设计(论文)工作:自2011年6月20日起至2011年6月25日止。
三、课程设计(论文)的内容要求:1)基本要求:1、分析Winsock的编程技术,特别是Winsock使用2、分析聊天程序的功能及其相关网络协议3、给出程序流程图和设计方案4、选择开发环境,编译源程序5、给出软件测试文档2)设计要求1、资料提交形式:课程设计报告一份(按学校相关标准、纸质,且严格按照给定模板来组织撰写,特别是课设时间要对、签名要手写、封面一定要用学校买的)、电子文档一份;2、课程设计报告不少于3000字;3、电子文档中必须至少有5份参考资料,压缩后以班为单位交电子版给老师,时间为第18周的周六。
4、成绩:出勤占10%、课程设计报告占40%、答辩占20%、参考资料占30%。
5、课程设计报告模板写附录。
3)工具要求:1、界面清楚易懂;2、程序层次结构清晰。
4)实验安排:1、地点:创新大楼东4052、时间:周一、三、四上午8:00--11:30学生签名:2011年6月26日课程设计(论文)评阅意见等级项目优秀良好中等及格不及格课程设计态度评价出勤情况评价任务难度评价工作量饱满评价设计中创新性评价论文书写规范化评价综合应用能力评价综合评定等级评阅人谢昕职称教授2011年6月27日目录一、任务分析与方案设计 01.任务分析 02.方案设计 0二、开发环境与工具 01.设计环境 01.1 eclipse开发平台介绍 02.基础知识 (1)2.1java Socket网络编程简介 (1)2.2套接字的介绍 (1)2.3 TCP/IP协议简介 (1)三、关键技术与理论 (2)1.JA V A编程技术 (2)2.Java Socket网络编程接口 (2)四、相关图解及程序 (3)1.体系结构设计 (3)2.具体功能模块的分析 (3)3.程序代码: (4)五、测试及结果分析 (8)六、心得体会 (10)七、参考文献 (11)一、任务分析与方案设计1.任务分析随着计算机科学技术的发展,网络越来越深刻地改变着人们生活方方面面。
基于Microsoft Visual Stadio 2005 C++ 环境下采用Winsock 编程原理实现服务器——客户端通讯的简单程序运行整体效果服务器整体图片客户端整体图片服务器编写1.新建Windows窗体应用程序Server文件——新建——项目,进入新建项目,选CLR、Windows窗体应用程序,在下面名称一项输入Server,保存位置自己定,如下图1所示图1 单击确定后,进入Server界面,如下图2所示图2从图2可以清楚地看到新建Server包含的一些资源,中间是开发的界面,默认为Form1,右边是一些调协的属性!我们想要调试后得到什么样的界面效果,直接到Form1中进行设置即可,右边有个工具箱,自动隐藏,当然也可设置显示,如下图3所示图3可以看到上面有很多功能选项!现在我们开始对Form1进行开发,将顶上“Form1”改为“聊天——服务器”,即单击Form1界面,在右边属性的Text项中的“Form1”更改为“聊天——服务器”即可,如下图4所示图4设置IP和端口显示的窗口,选取TextBox选项,在界面上拉出一条窗口,如下图5所示图5单击刚拉出的窗口,在右边属性项Name中将默认的TextBox1更改为IPBox,如下图6所示图6再从工具箱中选取Label项,在IPBox左边拉出一小窗口,默认文字为Label1,点击它,在右边的属性中找到Text项,将默认的“Label1”更改为“本地服务器IP和端口:”,如下图7所示图7同样,选取TextBox,拉出一个显示窗口,如下图8所示,在属性中设置Name为ShowBox,ScrollBars选为Vertical(竖向输入),Multiline选为True可多项输入!图8再在ShowBox下用TextBox拉出一输入窗口,在属性项将Name设置为InputBox,如下图9所示图9在ShowBox与InputBox之间用Label拉出一窗口,在Text中将“Label”改为“请您输入想说的话:”,如下图10所示图10添加“发送”和“退出”按键,如下图11所示,选取Button项拉出两按键,分别在Name 项将Button1更改为“SendButton”和“QuitButton”,而在Text项中将Button1分别更改为“发送”和“退出”!图11以上基本设置完了界面,调试后会出现此界面,类QQ的形式!现在对代码进行编写,双击左边的Server.cpp文件,进入到里面,在using namespace Server;下加多一行代码,如下using namespace Server;using namespace System::Threading;选取Form1.h文件,右击选取“查看代码”进入下窗口,如下图12所示图12将里面的代码按下面的代码编写#pragma oncenamespace Server {using namespace System;using namespace System::ComponentModel;using namespace System::Collections;using namespace System::Windows::Forms;using namespace System::Data;using namespace System::Drawing;using namespace System::Threading;using namespace System::Text;using namespace System::Net;using namespace System::Net::Sockets;using namespace System::IO;/// <summary>/// Form1 摘要////// 警告: 如果更改此类的名称,则需要更改/// 与此类所依赖的所有.resx 文件关联的托管资源编译器工具的/// “资源文件名”属性。
VB网络通讯程序设计WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器并进行数据交换。
这两种协议都能用来创建客户端和服务端应用程序。
就像定时器控件一样,WinSock控件运行时没有一个可视的界面。
下面就是分别用TCP和UDP协议来创建的网络聊天软件。
TCP协议网络聊天程序的运行过程及原理第一步:建立连接主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。
第二步:开始聊天主要过程是:在客户机的“发送的信息”文本框中输入文字时,服务器端的“收到的信息”文本框中就会实时地显示相同的文字,反之亦然。
服务器的界面设计1.创建一个“标准 EXE”工程,选中“工程”菜单的“部件”,在控件中找到Microsoft Winsock Control并将其选中。
2.将Form1的名称改为Form_Load(),并在其中添加两个命令按钮(Command1的Caption属性为“退出”,Command2的Caption属性为“发送”)。
3.在窗体是添加三个TextBox控件,其名称分别为txtServerIP,txtSend和txtReceive。
4.在窗体上添加一个Winsock控件,将其Protocol(协议)属性设置为0(即sckTCPProtocol)。
服务器端的源代码:Private Sub Form_Load()'设置侦听端口WinsockServer.LocalPort = 10001'读取服务器的IP地址txtServerIP.Text = WinsockServer.LocalIP'开始侦听WinsockServer.ListenEnd SubPrivate Sub Command1_Click()'点击“退出”按钮后关闭应用程序Unload MeEnd SubPrivate Sub Command2_Click()'只要txtSend文本框的内容写好以后就由WinsockServer控件发送WinsockServer.SendData txtSend.TextEnd SubPrivate Sub WinsockServer_ConnectionRequest(ByVal requestID AsLong)'当收到连接请求时,Winsock处于侦听状态'此时应该使用Close方法关闭Winsock,然后使用Accept方法接受连接请求WinsockServer.CloseWinsockServer.Accept requestIDEnd SubPrivate Sub WinsockServer_DataArrival(ByVal BytesTotal As Long) '当客户端有信息发送来时,利用WinsockServer控件的GatData 方法读取数据'并将其显示在txtReceive文本框中Dim MyStr As StringWinsockServer.GetData MyStrtxtReceive.Text = MyStrEnd Sub运行界面如下图:客户端的界面设计1.创建一个新的“标准EXE”工程,并添加Winsock 控件。
在PB中使⽤WINSOCK.OCX做双向通信的简单例⼦⼀、在窗⼝中添加WINSOCK控件:在应⽤中新开⼀个窗⼝,在窗⼝画板中点击controls-->OLE菜单项,弹出Insert object窗⼝,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗⼝上。
在程序中该控件名称定为winsock_a(甲⽅)和winsock_b(⼄⽅)。
⼆、设置信息输⼊输出⽂本框:在窗⼝中增加⼀个按钮cb_1,两个单⾏⽂本框sle_1,sle_2,分别⽤于输⼊要发送的字符串和接受对⽅发送的字符串。
三、设置通讯协议:WINSOCK控件允许⽤户以UDP和TCP两种协议中任选⼀种进⾏通讯。
1.UDP协议设置:UDP协议是⼀种⽆连接的通讯协议,在通讯之前,需要绑定remotehost和remoteport属性,如果需要双向通讯,还要设置localport属性。
在甲⽅(本机地址为:134.1.1.1)窗⼝的Open事件中加⼊如下语句:winsock_a.object.protocol=1//winsock通讯协议设为UDP协议winsock_a.object.remotehost="134.1.1.2"//对⽅的ip地址winsock_a.object.remoteport=6000//对⽅的winsock通讯端⼝号winsock_a.object.localport=6001//本机的winsock通讯端⼝号winsock_a.object.bind//绑定通讯协议在⼄⽅(本机地址为:134.1.1.2)窗⼝的Open事件中加⼊如下语句:winsock_b.object.protocol=1//winsock通讯协议设为UDP协议winsock_b.object.remotehost="134.1.1.1"//对⽅的ip地址winsock_b.object.remoteport=6001//对⽅的winsock通讯端⼝号winsock_b.object.localport=6000//本机的winsock通讯端⼝号winsock_b.object.bin//绑定通讯协议2.TCP协议设置:TCP协议在通讯前需要进⾏连接。
案例开发与分析一一聊天程序的开发一、客户端任务1创建客户端框架程序,设计用户界面,并实现与服务器的连接。
1. 创建一个空白工作区,并命名为 Chat 。
2.在Chat 工作区,用 MFC AppWizard 创建基于对话框的项目 ChatClient ,并在Step2中选中 Windows Socket 选项。
3. 在对话框中添加控件,如下图所示:4.对话框中的控件属性如下表: 表1控件属性控件类型 控件ID Caption其他List Box IDC_LIST_MESSAGE不选Sort List Box IDC_LIST_ONLINE_USERS不选SortEdit Box IDC_EDIT_MESSAGE 选中 Multiline 和 VerticalscrollRadio Butt on IDC_RADIO_GROUP 群聊Radio Butt onIDC_RADIO_PRIV ATE 私聊Butt on IDC_BUTTON_LOGIN 登录Butt onIDC BUTTON LOGOUT退出5. 用ClassWizard 为控件对象定义相应的成员变量,如下表所示:表2控件对应成员变量控件ID 控件类型 成员变量名IDC__EDIT_MESSAGE CStri ng m_strMessage IDC __LIST_MESSAGE CListBox m_listMessage IDC LIST ONLINE USERSCListBoxm listUsers6. 添加对话框,ID 为IDD_DIALOG_LOGIN , Caption 为“登录”。
7.在对话框中添加控件,如下图所示:8.对话框中的控件属性如下:表3登录对话框控件属性控件类型控件ID Caption其他Edit Box IDC_EDIT_IPEdit Box IDC_EDIT_PORTEdit Box IDC_EDIT_USERNAMEEdit Box IDC_EDIT_PASSWORD 选Styles->PasswordButt on IDOK 连接选Styles->Default Butt on Butt on IDCANCEL 取消9. 添加一个新类,类名为CLogin,基类为CDialog,Dialog ID 为IDD_DIALOG_LOGIN10.用ClassWizard为对话框的控件对象定义成员变量,如下表所示:表4登录对话框控件对应成员变量控件ID 控件类型成员变量名IDC_EDIT_IP CStri ng m_strIPIDC_EDIT_PASSWORD CStri ng m_strPasswordIDC_EDIT_PORT UINT m_n PortIDC EDIT USERNAME CStri ng m strUserName11.为CChatClientDIg类添加"登录”按钮的单击事件消息处理函数OnButtonLogin (),并添加如下代码:CLoginDlg dlg;int nRet = -1;nRet = dlg.DoModal();编译项目并运行,单击登录按钮,看看运行情况。
VB6通过winsock控件数组实现客户端和服务器多对一通信在VB6中使用winsock控件需要引用Microsoft Winsock Control 6.0部件使用winsock控件可以实现客户端和服务器间C/S结构的通信,如果把客户端和服务器放置于同一台电脑中,并且将客户端winsock 的RemoteHost设置为本机IP,则可以实现客户端程序和服务端程序间的自由通信。
在应用程序之间采用winsock通信比内存共享等方法更简单快捷,同时也更安全。
在客户端中添加一个窗体,拖拽一个winsock控件到该窗体上。
Private Sub Form_Load()Me.Winsock1.RemoteHost = "192.168.1.5"Me.Winsock1.RemotePort = 10002Me.Winsock1.ConnectEnd SubRemoteHost代表需要连接的远程服务器IP地址,局域网中的通信可以使用路由器分配的IP地址。
RemotePort代表端口号,服务器和客户端通过该端口进行连接。
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strGet As String'接收字符串并写入T ext1控件中Winsock1.GetData strGetText1.Text = strGetEnd Sub当客户端的winsock接收到服务器发送来的数据后会触发Winsock1_DataArrival事件,利用GetData方法可以将数据读取出来,一般来说将数据读取到byte()数组中是最好的,因为利用字节数组可以收发图片、音频等文件,本例中为了演示所以直接用一个字符串变量来读取数据了。
Dim strSet As StringWinsock1.SendData strSet客户端向服务器发送数据可以用SendData方法,该方法同样可以发送字节数组,这里为了演示所以发送了个字符串。
用Delphi编写局域网中C/S型聊天程序中原工学院计算机教研室夏敏捷Internet盛行的今天,网上聊天QQ已成为一种时尚。
QQ是深圳腾讯公司的一个网络实时通讯软件,在国内拥有大量的用户群。
但QQ必须连接上互联网登陆到腾讯的服务器才能使用。
所以我们可以自己写一个在局部网里面使用的自己的QQ。
QQ使用的是UDP协议,这是一种无连接协议,即通信双方不用建立连接就可以发送信息,所以效率比较高。
Delphi本身自带的FastNEt公司的NMUDP控件就是一个UDP协议的用户数据报控件。
这里我们编写的局域网上实现聊天的程序采用的是TCP协议,TCP 是一种面向连接协议,具有较高的可靠性。
在Delphi中利用ClientSocket、ServerSocket这两种控件(Internet面板上),可以轻松的编写出C/S聊天程序,以下的程序在Delphi 6+winXP 中通过。
一、原理首先建立客户与主机的连接,把要发送的文字信息写进字符串中,然后ClientSocket组件的Socket..sendtext方法把文本发送出去。
当主机有数据接收时,触发它的ServerSocket 组件onClientRead事件,我们在这里用socket.ReceiveText接收字符信息,然后显示出来。
主机可以通过Socket..sendtext方法再将此用户信息转发给所有用户或单独的用户,在数据到达客户端后触发客户端OnRead事件,接受主机的数据。
为了区分不同的信息(新用户信息、昵称、交谈、用户离开)设计了以下协议格式:1.发送添加的新用户信息的格式:“添加用户”@用户的昵称^它的IP@用户的昵称^它的IP@……@此信息中将所有的用户的昵称和它的IP均包含在其中,新用户是最后一个。
2.发送昵称信息的格式:“昵称”@用户的昵称此信息用于在客户和服务器建立连接后,发送用户的昵称给服务器。
而用户的IP 地址可以通过(socket.RemoteAddress)得出。
课程设计(论文)任务书信息学院专业计算机班级2009-2一、课程设计(论文)题目基于Winsock的简单聊天工具的设计二、课程设计(论文)工作:自2011年6月20日起至2011年6月25日止。
三、课程设计(论文)的内容要求:1)基本要求:1、分析Winsock的编程技术,特别是Winsock使用2、分析聊天程序的功能及其相关网络协议3、给出程序流程图和设计方案4、选择开发环境,编译源程序5、给出软件测试文档2)设计要求1、资料提交形式:课程设计报告一份(按学校相关标准、纸质,且严格按照给定模板来组织撰写,特别是课设时间要对、签名要手写、封面一定要用学校买的)、电子文档一份;2、课程设计报告不少于3000字;3、电子文档中必须至少有5份参考资料,压缩后以班为单位交电子版给老师,时间为第18周的周六。
4、成绩:出勤占10%、课程设计报告占40%、答辩占20%、参考资料占30%。
5、课程设计报告模板写附录。
3)工具要求:1、界面清楚易懂;2、程序层次结构清晰。
4)实验安排:1、地点:创新大楼东4052、时间:周一、三、四上午8:00--11:30学生签名:2011年6月26日课程设计(论文)评阅意见等级项目优秀良好中等及格不及格课程设计态度评价出勤情况评价任务难度评价工作量饱满评价设计中创新性评价论文书写规范化评价综合应用能力评价综合评定等级评阅人谢昕职称教授2011年6月27日目录一、任务分析与方案设计 01.任务分析 02.方案设计 0二、开发环境与工具 01.设计环境 01.1 eclipse开发平台介绍 02.基础知识 (1)2.1java Socket网络编程简介 (1)2.2套接字的介绍 (1)2.3 TCP/IP协议简介 (1)三、关键技术与理论 (2)1.JA V A编程技术 (2)2.Java Socket网络编程接口 (2)四、相关图解及程序 (3)1.体系结构设计 (3)2.具体功能模块的分析 (3)3.程序代码: (4)五、测试及结果分析 (8)六、心得体会 (10)七、参考文献 (11)一、任务分析与方案设计1.任务分析随着计算机科学技术的发展,网络越来越深刻地改变着人们生活方方面面。
四川畜牧兽医学院学报 2002,16(4)Jo urnal of Sichuan Institute of Animal Hus bandry and Veterinary MedicineVB6中用Winsock 控件实现多台计算机之间的通信胡大辉 杜治国 肖兴江(西南农业大学荣昌校区信息学院 重庆荣昌 402460)摘 要 本文主要阐述通过VB6中Winsock 控件的灵活运用,达到计算机之间相互通信的目的。
文章从介绍Winsock 控件入手,利用W insock 控件实现两台计算机之间互相通信,在此基础上达到多台计算机通信的目的,最后概要介绍开发实用通信软件的基本方法。
关键词 VB6 Winsock 计算机通信 程序设计中图分类号 G201 文献标识码 A 文章编号 1009-0533(2002)04-0080-051 前言Visual Basic 6.0,简称VB6,是M icrosoft Visual Studio 可视化工具中的一个开发工具,是一个用于快速开发基于Windo w s 的客户机/服务器应用程序的高效工具。
Visual Basic 现在流行的版本是6.0,比较以往的版本,VB6新增的特性有:数据访问的改进,增加AD O(ActiveX Date Objects)控件;新的网络通信特性;新增一些控件并对原有控件进行改进;用户可以创建自己的数据源;对语言特性进行改进并新增一些函数。
因此,无论用户是Windo ws 编程的新手或是对Windo ws 编程有丰富的经验,利用Visual Ba-sic 提供的良好的开发环境,用户均可快速完成所需任务。
在VB6中,一共有三个Activ eX 控件可以用来开发计算机通信应用程序,它们为用户提供了几乎每一层的网络通信协议。
这三个控件是Winso ck 控件、Intern et Transf er 控件和Web-Bro wser 控件。
2 Winsock 控件的功能及属性2.1 Winsock 控件的功能 Winsock 控件能开发基于传输控制协议(TCP)和用户数据报协议(UD P)的计算机网络通信应用程序,并提供对T CP 和UD P 的低层访问。
1.服务器端往服务器窗体(命名为frmServer)添加三个控件,分别为LIST1(存放在线好友名单),text1(留言内容)和text2(聊天记录),程序如下:Option ExplicitConst Busy As Boolean = FalseConst Free As Boolean = TrueDim ConnectState() As BooleanDim SIndexDim Usrs(0 To 32) '在线人名Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)EndEnd SubPrivate Sub Form_Load()If App.PrevInstance = True ThenMsgBox "程序已在运行", vbCriticalEndEnd IfReDim Preserve ConnectState(0)On Error Resume NextConnectState(0) = FreeListener.LocalPort = 1001 '端口号Listener.Listen '开始侦听End SubPrivate Sub Listener_ConnectionRequest(ByValrequestID As Long)Dim SockIndexAs IntegerDim SockNumAs IntegerOn Error Resume NextSockNum = UBound(ConnectState)If SockNum> 32 ThenExit Sub'查找空闲的SckServerSockIndex = FindFreeSocket'如果已有的sock都忙,而且sock数不超过32个,动态添加sockIf SockIndex>SockNum Then Load SckServer(SockIndex)ConnectState(SockIndex) = BusySckServer(SockIndex).Tag = SockIndex'接受请求SckServer(SockIndex).Accept (requestID)End SubPrivate Sub SckServer_DataArrival(Index As Integer, ByValbytesTotal As Long)Dim dx As StringSIndex = IndexSckServer(Index).GetData dx, vbStringIf Len(Text2.Text) >= 512 Then Text2.Text = ""If Right(dx, 2) = "||" ThenList1.AddItem Replace(dx, "|", "")Usrs(SIndex) = Replace(dx, "|", "")Timer1.Enabled = TrueText2.Text = Format(Now(), "YY-MM-DD hh:mm:ss") & " “" &Usrs(Index) & "”上线。
" &vbCrLf& Text2.TextOpen App.Path& "\record.txt" For Append As #1Write #1, Format(Now(), "YY-MM-DD hh:mm:ss") & " “" &Usrs(Index) & "”上线。
"Close #1ElseText1.Text = Left(dx, InStr(dx, "|")) & Format(Now(), "YY-MM-DD hh:mm:ss") &vbCrLf&Usrs(Index) & "☆说:" & Right(dx, Len(dx) - InStr(dx, "|"))Text2.Text = Format(Now(), "YY-MM-DD hh:mm:ss") & " “" &Usrs(Index) & "”对“" & Replace(dx, "|", "”说:" &vbCrLf) &vbCrLf& Text2.TextOpen App.Path& "\record.txt" For Append As #1Write #1, Format(Now(), "YY-MM-DD hh:mm:ss") & " “" &Usrs(Index) & "”对“" & Replace(dx, "|", "”说:" &vbCrLf)Close #1End IfEnd SubPrivate Sub SckServer_Close(Index As Integer)Dim i%On Error Resume NextIf SckServer(Index).State <>sckClosed Then SckServer(Index).CloseConnectState(Index) = FreeText2.Text = Format(Now(), "YY-MM-DD hh:mm:ss") & " “" &Usrs(Index) & "”下线。
" &vbCrLf& Text2.TextOpen App.Path& "\record.txt" For Append As #1Write #1, Format(Now(), "YY-MM-DD hh:mm:ss") & " “" &Usrs(Index) & "”下线。
"Close #1For i = 0 To List1.ListCountIf List1.List(i) = Usrs(Index) ThenList1.RemoveItem (i)Usrs(Index) = ""Timer1.Enabled = TrueExit ForEnd IfNextEnd SubPublic Function FindFreeSocket()Dim SockCount, i As IntegerSockCount = UBound(ConnectState)For i = 0 ToSockCountIf ConnectState(i) = Free ThenFindFreeSocket = iExit FunctionEnd IfNext iReDim Preserve ConnectState(0 To SockCount + 1)FindFreeSocket = UBound(ConnectState)End FunctionPrivate Sub Text1_Change()Dim Ar, iOn Error GoTo L1Ar = Split(Text1.Text, "|")For i = 0 To UBound(Usrs)If Usrs(i) = Ar(0) And Ar(0) <> "" Then Exit ForNextSckServer(i).SendData Text1.TextL1:End SubPrivate Sub Timer1_Timer()Dim i%, j%, Str$For j = 0 To List1.ListCountStr = Str&List1.List(j) & "||"NextOn Error Resume NextFor i = 0 To UBound(ConnectState) SckServer(i).SendDataStrNextL1:Str = ""Timer1.Enabled = FalseEnd Sub2.客户端客户端工程里添加两个窗体(Login和frmClient),分别如图所示,把登陆窗体存放用户名的文本框命名为USRN。
程序代码如下(示范,没什么实际意义):Private Sub Form_Load()If App.PrevInstance = True ThenMsgBox "程序已在运行", vbCriticalEndEnd IfUsrn.Text = UCase(Environ("UserName"))End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)EndEnd SubPrivate Sub Command1_Click()Me.HidefrmClient.ShowEnd SubPrivate Sub Command2_Click()Usrn.Text = ""Text2.Text = ""End SubPrivate Sub Command3_Click()EndEnd Sub在对话窗体(frmClient)中添加三个对象,List1用于存放在线好友名单,单击选中要交谈的好友,Txtsend输入要发送的信息,txtOutput显示收到的信息。
Connect按钮用于重新连接服务器。
程序如下:ConstComputerName = "你的计算机名字或IP地址"Private Sub Form_Load()'Winsock 控件的名字为SckClient。