VB怎么实现局域网聊天的?

作者&投稿:蒲盲 (若有异议请与网页底部的电邮联系)
如何用VB制作简单的局域网聊天工具?~

private sub form_load()‘设置本机连接端口的localport属性的内容‘请注意!必须是整体值tcpserver.LocalPort=2000‘将本机连接端口设置为监听模式tcpserver.ListenMe.Caption=”frmsever”Label1.Caption=”传送的文字“Label2.Caption=”接收的文字“‘打开frmclient窗体frmClient.Showend subprivate sub tcpserver_connectionrequest(byval requestid as long)‘如果tcpserver 控件的状态目前不是处于关‘闭的状态时,在允许远程设备连接时,必须要关闭目前的控制的运行if tcpserver.statesckclosed then tcpserver..close‘允许远程设备使用必要的识别码(requestid)与主机进行连接tcpserver.accept requestidend subprivate sub txtsend_change()‘当txtsend控件的内容发生变化时,将txtsend控件的内容,通过tcpserver控件senddata方‘法,将txtsend控件的内容传送给frmclienttcpserver.senddata txtsend.textend sub private sub tcpserver_dataarrival(byval bytestotal as long)‘声明即将接收的数据类型dim strdata as string ‘调用tcpserver控件的getdata方法,将接收的数据以vbstring数据类型,存放在strdata变量之中。Tcpserver.getdata strdata ,vbstring ‘将strdata变量的内容,存放在txtoutput控件之中。Txtreceive.text =strdataEnd sud

引用vb的帮助文件:

TCP 连接初步
如果应用程序要使用 TCP 协议,那么首先必须决定应用程序是服务器还是客户端。如果要创建一个服务器端,那么应用程序需要“监听”指定的端口。当客户端提出连接请求时,服务器端能够接受请求并建立连接。在连接建立之后,客户端与服务器端可以自由地互相通讯。

下列步骤创建一个非常简单的服务器:

要创建一个 TCP 服务器,请按照以下步骤执行:

创建新的 Standard EXE 工程。


将缺省窗体的名称改为 frmServer。


将窗体的标题改为“TCP 服务器”。


在窗体中放入一个 Winsock 控件,并将它的名字改为 tcpServer。


在窗体上添加两个 TextBox 控件。将第一个命名为 txtSendData,第二个为 txtOutput。


为窗体添加如下的代码。
Private Sub Form_Load()
'将 LocalPort 属性设置为一个整数。
'然后调用 Listen 方法。
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show '显示客户端的窗体。
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
'检查控件的 State 属性是否为关闭的。
'如果不是,
'在接受新的连接之前先关闭此连接。
If tcpServer.State sckClosed Then _
tcpServer.Close
'接受具有 requestID 参数的
'连接。
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
'名为 txtSendData 的 TextBox 控件中
'包含了要发送的数据。当用户往文本框中
'键入数据时,使用 SendData 方法
'发送输入的字符串。
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
'为进入的数据声明一个变量。
'调用 GetData 方法,并将数据赋予名为 txtOutput
'的 TextBox 的 Text 属性。
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub

上面的步骤创建了一个简单的服务器应用程序。为了使它能够工作,还必须为它创建一个客户端的应用程序。

要创建 TCP 客户端,请按照以下步骤执行:

在工程中添加一个新的窗体,将其命名为 frmClient。


将窗体的标题改为“TCP Client”。


在窗体中添加一个 Winsock 控件,并将其命名为 tcpClient。


在 frmClient 中添加两个 TextBox 控件。将第一个命名为 txtSend,第二个为 txtOutput。


在窗体上放一个 CommandButton 控件,并将其命名为 cmdConnect。


将 CommandButton 控件的标题改为 Connect。


在窗体中添加如下的代码。
重点 必须将 RemoteHost 属性值修改为您的计算机的名字。

Private Sub Form_Load()
'Winsock 控件的名字为 tcpClient。
'注意:要指定远程主机,可以使用
' IP 地址(例如:"121.111.1.1"),也可以使用
'计算机的“好听的名字”如下所示。
tcpClient.RemoteHost = "RemoteComputerName"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
'调用 Connect 方法,初始化连接。
tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub

上面的代码创建了一个简单的客户/服务器模式的应用程序。我们可以将两者都运行起来:运行工程,然后单击“连接”。在两个窗体之一的 txtSendData 文本框中键入文本,可以看到同样的文字将出现在另一个窗体的 txtOutput 文本框中。

接受多个连接请求
上面设计的基本服务器只能接受一个连接请求。通过创建控件数组,使用一个控件也可以同时接受多个连接请求。利用这种方法,不需要关闭连接,而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上调用 Accept 方法。

下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分。在声明部分,声明了一个模块级的变量 intMax。在窗体的 Load 事件中,intMax 被设置为 0,数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法,使之成为“监听”控件。在连接请求到达时,代码将检测 Index 是否为 0(“监听”控件的值)。如果为 0,监听控件将增加 intMax 的值,并使用该号码来创建新的控件实例。然后,使用新的控件实例接受连接请求。

Private intMax As Long

Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest _
(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckServer(intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub

UDP 初步
创建 UDP 应用程序比创建 TCP 应用程序还要简单,因为 UDP 协议不需要显式的连接。在上面的 TCP 应用程序中,一个 Winsock 控件必须显式地进行“监听”,另一个必须使用 Connect 方法初始化连接。

UDP 协议不需要显式的连接。要在两个控件中间发送数据,需要完成以下的三步(在连接的双方):

将 RemoteHost 属性设置为另一台计算机的名称。


将 RemotePort 属性设置为第二个控件的 LocalPort 属性。


调用 Bind 方法,指定使用的 LocalPort。(下面将详细地讨论该方法。)
因为两台计算机的地位可以看成“平等的”,这种应用程序也被称为点到点的。为了具体说明这个问题,下面将创建一个“聊天”应用程序,两个人可以通过它进行实时的交谈。

要创建一个 UDP 伙伴,请按照以下步骤执行:

创建一个新的 Standard EXE 工程。


将缺省的窗体的名称修改为 frmPeerA。


将窗体的标题修改为“Peer A”。


在窗体中放入一个 Winsock 控件,并将其命名为 udpPeerA。


在“属性”页上,单击“协议”并将协议修改为 UDPProtocol。


在窗体中添加两个 TextBox 控件。将第一个命名为 txtSend,第二个命名为 txtOutput。


为窗体增加如下的代码。
Private Sub Form_Load()
'控件的名字为 udpPeerA
With udpPeerA
'重点:必须将 RemoteHost 的值
'修改为计算机的名字。
.RemoteHost= "PeerB"
.RemotePort = 1001 '连接的端口号。
.Bind 1002 '绑定到本地的端口。
End With
frmPeerB.Show '显示第二个窗体。
End Sub

Private Sub txtSend_Change()
'在键入文本时,立即将其发送出去。
udpPeerA.SendData txtSend.Text
End Sub

Private Sub udpPeerA_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerA.GetData strData
txtOutput.Text = strData
End Sub

要创建第二个 UDP 伙伴,请按照以下步骤执行:

在工程中添加一个标准窗体。


将窗体的名字修改为 frmPeerB。


将窗体的标题修改为“Peer B”。


在窗体中放入一个 Winsock 控件,并将其命名为 udpPeerB。


在“属性”页上,单击“协议”并将协议修改为“UDPProtocol”。


在窗体上添加两个 TextBox 控件。将第一个命名为 txtSend,第二个命名为 txtOutput。


在窗体中添加如下的代码。
Private Sub Form_Load()
'控件的名字为 udpPeerB。
With udpPeerB
'重点:必须将 RemoteHost 的值改为
'计算机的名字。
.RemoteHost= "PeerA"
.RemotePort = 1002 '要连接的端口。
.Bind 1001 '绑定到本地的端口上。
End With
End Sub

Private Sub txtSend_Change()
'在键入后立即发送文本。
udpPeerB.SendData txtSend.Text
End Sub

Private Sub udpPeerB_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
udpPeerB.GetData strData
txtOutput.Text = strData
End Sub

如果要试用上面的例子,按 F5 键运行工程,然后在两个窗体的 txtSend TextBox 中分别键入一些文本。键入的文字将出现在另一个窗体的 txtOutput TextBox 中。

关于 Bind 方法
在上面的代码中,在创建 UDP 应用程序时调用了 Bind 方法,这是必须的。Bind 方法的作用是为控件“保留”一个本地端口。例如,如果将控件绑定到 1001 号端口,那么其它应用程序将不能使用该端口进行“监听”。该方法阻止其它应用程序使用同样的端口。

Bind 方法的第二个参数是任选的。如果计算机上存在多个网络适配器,可以用 LocalIP 参数来指定使用哪一个适配器。如果忽略该参数,控件使用的将是计算机上“控制面板”设置中“网络”控制面板对话框中列出的第一个适配器。

在使用 UDP 协议的时候,可以任意地改变 RemoteHost 和 RemotePort 属性,同时始终保持绑定在同一个 LocalPort 上。TCP 协议与此不同,在改变 RemoteHost 和 RemotePort 属性之前,必须先关闭连接。

1、winsock 部件 2、客务端
(客务端): 监听 -->接受请求 -->发送数据 -->关闭连接
Private Sub Form_Load()
Winsock1.LocalPort = 5238'这个是端口
Winsock1.Listen
Text1.Locked = True
Text2.Locked = True
Text2.Text = "等待客户登陆!"
End SubPrivate Sub Form_Unload(Cancel As Integer)
Winsock1.Close
End SubPrivate Sub Text1_Change()
Winsock1.SendData Text1.Text
End SubPrivate Sub Winsock1_Close()
Winsock1.Close
Text2.Text = "等待客户登陆!"
Winsock1.LocalPort = 5238
Winsock1.Listen
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
Text2.Text = "客户已登陆!"
Text1.Locked = False
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsock1.GetData str, vbString
Text2.Text = str
End Sub
3、客户端
(户务端): 监听 -->接受请求 -->发送数据 -->关闭连接
Private Sub Command1_Click()
Winsock1.Close
Winsock1.RemoteHost = Text3.Text'这是IP。
Winsock1.RemotePort = 5238 '这是端口。。
Text2.Text = "链接户务器出错,请重新配置!"
On Error GoTo herr
Winsock1.Connect
Exit Sub
herr:
Winsock1.Close
Text2.Text = "链接户务器出错,请重新配置!"
Exit Sub
End SubPrivate Sub Form_Load()
Text1.Locked = True
Text2.Locked = True
End SubPrivate Sub Text1_Change()
Winsock1.SendData Text1.Text
End SubPrivate Sub Winsock1_Close()
'断开链接
Winsock1.Close
End Sub
Private Sub Winsock1_Connect()
'发送用户信息
Text2.Text = "链接成功!"
Text1.Locked = False
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str As String
Winsock1.GetData str, vbString
Text2.Text = str
End Sub
看,客户端的端口和户务端的端口是一样的,这样就达到了一个协议,
客户端的IP就是连接户务端的主机IP。。。这样就搭到了连接


VB怎么实现局域网聊天的?
1、winsock 部件 2、客务端 (客务端): 监听 -->接受请求 -->发送数据 -->关闭连接 Private Sub Form_Load()Winsock1.LocalPort = 5238'这个是端口 Winsock1.Listen Text1.Locked = True Text2.Locked = True Text2.Text = "等待客户登陆!"End SubPrivate Sub Form_Unload(Cancel As Inte...

VB编写的局域网聊天工具源代码
--- 先编写"聊天(主机)"程序。在窗体里添加Winsock控件,并设置其Protocol属性为1-SckUDPProtocol,其他属性为缺省值。接着添加两个标签和两个文本框,设置两个标签的标题属性分别为"接收窗"和"发送窗";两个文本框的标题属性为空。最后编写代码:--- 1."聊天(主机)"Private Sub Form-Load()...

求利用vb做的一个可以在局域网聊天,传文件的程序
在工程中添加一个标准窗体。将窗体的名字修改为 frmPeerB。将窗体的标题修改为“Peer B”。在窗体中放入一个 Winsock 控件,并将其命名为 udpPeerB。在“属性”页上,单击“协议”并将协议修改为“UDPProtocol”。在窗体上添加两个 TextBox 控件。将第一个命名为 txtSend,第二个命名为 txtOutput。在窗体中添加...

如何在局域网中利用Excel聊天
★第一步:打开Excel2003,新建一个工作簿文档,取名保存(如“工作记录.xls”)。★第二步:执行“工具→共享工作簿”,打开“共享工作簿”对话框(见图1),选中“允许多用户同时编辑,同时允许工作簿合并”选项,确定返回。★第三步:将上述工作簿文档保存在局域网上某台电脑的一个共享文件夹中。★第四...

如何实现局域网聊天
连通操作包括局域网内部各个计算机之间的连通,和局域网与Internet之间的连通。前者连通建立的步骤如下: 1. 鼠标点击 开始,进入控制面板,点击"Network and Internet Connections网络和Internet连接",选择网络连接( Network Connections),进行下一步。 2. 选择进行"两个或多个LAN的连接" 3. 右键点击一个连接. 4...

什么是局域网语音聊天工具?
局域网语音聊天就是指电脑可以不用连接因特网,即可在局域网内部实现语音聊天的功能。可通过在内网电脑上安装局域网声音传输软件,将A电脑麦克风声音实时传输给B电脑,同时把B电脑麦克风声音实时传输给A电脑,这样就实现了实时语音通话的功能。以下是详细操作步骤:1,先在网上下载楼月局域网声音传输系统,在...

用Excel共享工作簿在局域网聊天
第一步:打开Excel,新建一个工作簿文档,取名保存(如“工作记录.xls”)。第二步:执行“工具→共享工作簿”,打开“共享工作簿”对话框,选中“允许多用户同时编辑,同时允许工作簿合并”选项,确定返回。   第三步:将上述工作簿文档保存在局域网上某台电脑的一个共享文件夹中。第...

在网上怎么和别人建立局域网???
第二,在浩方的“局域网”,速度肯定不能和真正局域网内联机对战来的快,两台机器实现局域网可以用下面两种方式:1、用一根网线直接连接两机网卡,网线两端分别要做成A,B标的RJ45头(水晶头)。这种做法只能两台机器对战,不能接入inter网;2、用连接在inter网的交换机或路由器连接两台机器。不需要...

...飞鸽传输软件可以局域网内聊天,请问是怎样实现的呢?如果有点吗实现...
程序启动时先读取用户配置文件,一般是"*.ini"格式,然后,使用Winsock的广播消息给整个局域网发送一个数据包,这时候,如果其他电脑已经运行了飞鸽传书,那么他收到这个包后,会将包的信息读取出来,当然,这个包里有用户的IP,用户名,性别等等。这样,在用户列表里就多了一个用户了。他的用户检查方式...

怎么连接局域网
2.如果你的局域是有多台机器的网络环境的话,那么你就只有通过设备来实现你所要达到的目的了,那么都要用到哪些设备呢,我们通常用的都是路由器或者交换机了,这样你的局域就组建OK,当然如果想要达到理想的网络速度的话(局域网内),那么你可以把网络环境组成千兆的,还有就是注意布线,关于布线和千兆网的...

融水苗族自治县15136502244: 如何用VB制作简单的局域网聊天工具? -
坚使克欣: 用winsock控件,TCP模式:一个程序作为服务器一直处于监听状态,一个程序作为客户端连接服务器,连接成功后,用接收和发送两个方法收发数据即可,1对多,设置好IP和端口即可.UDP模式:直接利用IP和端口连接,1对1.

融水苗族自治县15136502244: 如何用VB制作简单的局域网聊天工具?
坚使克欣: VB中的winsock可以提供支持,具体的代码部分你可以在网上搜索一下.

融水苗族自治县15136502244: 用VB 作个局域网聊天程序,怎么做?
坚使克欣: 菜鸟就别考虑编了看看局域网聊天NetCall.实现局域网内(外)的短信息传递,为WinPopup的替代品.在界面上下了工夫,更会隐藏,更能在老板眼底下使用.有信息到达时整个界面变成红色以作提示.

融水苗族自治县15136502244: 用VB如何做一个局域网中可以通信的程序
坚使克欣: 参考一下: http://www.xy-365.com/company/s_1626.htm,只要加一个接受框触发事件,也就是如果接受到信息就调用发送功能块. 我原来写过一个局域网的聊天程序,用的是UDP协议,可以传输文件和用命令操作对方的计算机.

融水苗族自治县15136502244: VB怎么实现局域网聊天的?
坚使克欣: 1、winsock 部件2、客务端(客务端): 监听 -->接受请求 -->发送数据 -->关闭连接Private Sub Form_Load() Winsock1.LocalPort = 5238'这个是端口 Winsock1.Listen Text1.Locked = True Text2.Locked = True Text2.Text = "等待客户登陆!"...

融水苗族自治县15136502244: VB如何写一个一对多聊的局域网聊天系统?(一对一聊已经会了!) -
坚使克欣: 跟1对1没有多大的区别,只不过需要对发送的消息自己定义下格式,比如说一条消息,前面多少字节表示命令,后面紧跟内容,最后消息有服务端,处理根据前面的命令对消息进行路由

融水苗族自治县15136502244: 如何用VB编程实现异地局域网内部主机之间的通讯,类似QQ的即时通讯软件一样 -
坚使克欣: 这个聊天程序,楼主准备用面向连接的TCP来实现啊?为什么不用效率更高的UDP呢?TCP连接得经历三次握手,这样,通讯过程中,得耗费很多资源的啊.还有其时效性(或者叫即时性!?)也不如UDP.QQ早期就是使用UDP的.另外,我...

融水苗族自治县15136502244: VB可以做局域网聊天程序吗 -
坚使克欣: 可以 下面是代码 Option Explicit Private IgnoreText As Boolean '----------------------各控件说明---------------------------- '--名称-------------类型---------------作用------------------ 'frmMain Form CHAT主窗体 'Winsock1 Winsock 连接控件 'Label1 Label CONNECT ...

融水苗族自治县15136502244: vb制作简单聊天室
坚使克欣: 貌似netmeeting 就可以..开始-运行-conf 一个人建主 其他人加入就好了.还可以演讲.我们学校局域网都这样.

融水苗族自治县15136502244: vb 怎样实现两台电脑之间通过网络互相发送接受信息 -
坚使克欣: winsock控件,通过TCP/IP方式,程序的写法,一台做服务器,另一台直接访问(任何一台都可以先做服务器,)就可以直接发送信息了.具体程序网上有实例,参数设置完就可以了.但是两台以上的通信俺也还不明白

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网