VB编写的局域网聊天工具源代码

用VB做聊天程序的方法

---- 所谓"聊天"是指两个程序能够发送数据给对方。这个程序涉及到数据通讯的知识,仿佛很复杂,不过,由于VB给我们提供了一个Winsock控件,问题就变得很简单了。

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

---- 1."聊天(主机)"

Private Sub Form-Load()
′设置网络地址
Winsock1.LocalPort=1024
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1999
End Sub
Private Sub Text1-Change()
′发送用户输入的内容
Winsock1.SendData Text1.Text
End Sub
Private Sub Winsock1-DataArrival
(Byval bytesTotal As Long)
Dim rec As String
′接收对方数据并在文本框内显示
Winsock1.GetData rec, vb String
Text2.Text=rec
End Sub

---- 2."聊天(副机)"

Private Sub Form_Load()
′设置网络地址
Winsock1.LocalPort=1999
Winsock1.RemoteHost="202.96.6.1"
Winsock1.RemotePort=1024

---- 其他部分程序与(主机)相同。最后将两个程序存盘,并编译成执行(.Exe)文件。现在就可以使用这个程序进行对话了。
---- 七.文本框中文本的某一特定字符或字符串同时高亮显示的方法

---- 由于普通TextBox控件不支持不连续字符串的同时高亮显示,所以我们选择RichTextBox控件。单击工程(Project)选单项,在弹出的下拉选单中单击组件(Components)选单项,从弹出的对话框中选择Microsoft Rich Textbox Control 5.0复选框,确定加载RichTextBox控件。

---- 新建(New)一个工程,在窗体(Form)上添加一个RichTextBox控件和两个Command(按钮)控件,都采用系统默认的Name属性值;设置RichTextBox的Text属性值为空,Command1和Command2的Caption属性值分别设为"输入文本"和"选择字符串"。最后,添加如下VB代码:

Private Sub Command1-Click()
Dim str As String
Dim Text As String
str=〃输入文本〃
Text=InputBox(str)
RichTextBox1.Text=Text
End Sub
Private Sub Command2-Click()
Dim str As String
Dim Text As String
Dim Position As Integer
Dim Lenth As Integer
str=〃输入要高亮显示的字符串〃
Text=InputBox(str)
If Text 〈〉 〃〃 Then
Position=InStr(RichTextBox1.Text, Text)-1
Lenth=Len(Text)
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Do While InStr(Position+Lenth+
1, RichTextBox1.Text, Text) 〈〉 0
Position=InStr(Position+Lenth+
1, RichTextBox1.Text, Text)-1
RichTextBox1.SelStart=Position
RichTextBox1.SelLength=Lenth
RichTextBox1.SelColor=RGB(255,0,0)
Loop
End If
End Sub

---- 按F5执行程序,单击"输入文本"按钮,在弹出的对话框中输入一些文本,确定后,刚刚输入的文本将显示在RichTextBox中;再单击"选择字符串"按钮,在弹出的对话框中输入你希望高亮显示的字符串,确定后,RichTextBox中相应的字符串将以红色高亮显示。
---- 八.编程实现Windows 95/98操作系统热启动的方法

---- 要利用程序实现系统的重新启动,可以在你的程序中调用API函数来实现。建一个子函数:(以VB为例)

Declare Function SystemParametersInfo Lib 〃
user32〃 Alias -
〃SystemParametersInfo〃 (ByVal uAction As Long,
ByVal uParam As Long,
ByVal lpvParam As Any, ByVal
fuWinIni As Long) As Long
Sub DisableCtrlAltDelete(bDisabled As Boolean)
Dim X As Long
X=SystemParametersInfo(97, bDisabled, CStr(1), 0)
End Sub
Call DisableCtrlAltDelete(true) ′禁止热启
Call DisableCtrlAltDelete(false) ′允许热启

---- 九.在Windows 95/ 98启动后自动启动程序的方法
---- 我们都知道在Windows 95/98的"开始"→"程序"选单下有一"启动"选单项,当每次启动Windows 95或Windows 98时,系统都会自动启动放在"启动"选单栏里的可执行程序。

---- 但目前有好多软件,像解霸五、ICQ,以及大部分实时侦测病毒的软件等等,安装后,并没有放在"启动"选单里,也能在启动操作系统时自动启动。怎么实现的呢?

---- 其实只要知道Windows注册表的一些知识,这个问题就不能称之为问题了。用鼠标单击"开始",打开开始选单,再单击"运行",出现一对话框,然后输入"regedit",确定后,会打开系统注册表编辑器,找到HKEY-LOCAL-MACHINE? SOFTWARE?Microsoft?Windows?CurrentVersion?Run,加入你的程序的入口,就可以了。如果不知道怎么加,就参考一下已经存在的键值。

---- 十. 如何把数据文件输出到Text控件中?如果数据量比较大,窗体满屏也不够大,怎么解决?

---- 有一个比较简单的方法,就是把数据放到一个文本框(Text)里,并在其中加上水平和垂直滚动条。具体实现步骤为:先在窗体(Form)里加入一个文本框,采用默认名Text1;然后,设置文本框Text1的属性:Text属性设置为空,MultiLine属性设置为True,ScrollBars属性设置为3-Both;接着添加如下VB代码:

Private Sub Form-Load()
Dim Handle As Integer
Dim FileName As String
On Error GoTo ErrExit
begin:
′输入要显示的数据文件的名称
FileName=InputBox$(〃Input Filename〃,
〃Open File〃)
On Error GoTo FileErr
Handle=FreeFile
Open FileName For Input As #Handle
′把数据文件中的数据输出到文本框中
Text1.Text=Input$(LOF(Handle), Handle)
Close #Handle
Exit Sub
FileErr:
Dim ErrNum As Integer
If Err.Number=53 Then
ErrNum=MsgBox(〃File not exist〃,
vbOKCancel, 〃Error Information〃)
If ErrNum=1 Then
GoTo begin
Else
Exit Sub
End If
End If
MsgBox Err.Description, , 〃file open failed〃
ErrExit:
Exit Sub
End Sub
′使文本框充满整个窗体
Private Sub Form-Resize()
Text1.Left=0
Text1.Top=0
Text1.Width=Form1.Width-100
Text1.Height=Form1.Height-400
End Sub
---- 通过这样的处理,不仅能解决问题,而且用户还可以在文本框中对数据进行编辑。
---- 十一.关联文件列表框、目录列表框和驱动器列表框的方法

---- 想做一个对话窗体,包含驱动器列表框、目录列表框和文件列表框,并能实现三者的同步操作,怎么做?这都是我们在实际应用中经常会遇到的问题,在VB中解决这个问题非常简单,可以通过Path属性的改变引发Change事件来实现。例如:

Sub Dir1-Change()
File1.Path=Dir1.Path
End Sub

---- 该事件过程使窗体上的目录列表框Dir1和文件列表框File1产生同步。因为目录列表框Path属性的改变将产生Change事件,所以在Dir1-Change事件过程中,把Dir1.Path赋给File1.Path,就可以产生同步效果。类似地,增加下面的事件过程,就可以使三种列表框同步操作:
Sub Drive1-Change()
Dir1.Path=Drive1.Drive
End Sub

---- 该过程使驱动器列表框和目录列表框同步,前面的过程使目录列表框和文件列表框同步,从而使三种列表框同步,问题即可解决。

新建一个“标准.exe”工程,然后单击“工程”-->“部件”,在弹出的对话框里的“控件”选项卡里找到“Microsoft WinSock Control 6.0”,将WinSock控件天家到控件工具箱里。在窗体上添加两个WinSock,一个命名为sockCient,一个命名为sockSer,再右键WinSock,选择“属性”,名为sockCient的WinSock协议选择0-sckTCPProtocol,远程端口设置为1001,本地端口设置为1002;名为sockSer的WinSock协议选择0-sckTCPProtocol,远程端口设置为1002,本地端口设置为1001。然后添加2个文本框,名称分别是txtIP和txtSend。前面一个是用来输入IP地址的,后面一个是输入要发送的消息的。设置txtSend的MultiLine属性为True,ScrollBars属性为2。
添加两个按钮,一个叫cmbConnect,一个叫cmdSend。Caption分别设置成连接和发送消息。
要输入的代码是(举个例子,方法不止这一种):
private sub cmdconnect_click()
sockclient.remotehost=txtIP.text
sockclient.connect
cmdsend.enabled=true
cmdconnect.enabled=false
end sub
private sub form_unload(cancel as integer)
if sockclient.state<>sckclosed then sockclient.close
if sockser.state<>sckclosed then sockser.close
end
end sub
private sub cmdsend_click()
dim strsend as string
strsend=sockclient.localhostname+":"+txtsend.text
sockclient.senddata strsend
txtsend""
end sub
private sub form_load()
cmdsend.enabled=false
sockser.listen
end sub
private sub sockclient_connect()
n=msgbox("连接成功!",vbinformation,"提示")
cmdconnect.enabled=false
end sub
private sub sockclient_error(byval number as integer,description as string,byval scode as long,byval source as string,byval helpfile as string,by helpcontext as long,canceldisplay as boolean)
n=msgbox("连接出错!关闭连接!",vbinformation,"警告")
sockclient.close
cmdconnect.enabled=true
end sub
private sub sockser_connectionrequest(byval requestID as long)
if sockser.state<>sckclosed then sockser.close
sockser.accept requestID
end sub
private sub sockser_dataarrival(byval bytes total as long)
dim strget as string
sockser.getdata strget
if strget="^close^" then
sockser.close
sockser.listen
end if
n=msgbox("受到来自" & sockser.localIP & "的消息" & strget,,"提示")
end sub

..完全是自己打的,这台电脑没VB所以没办法试一下,你试下,看行不行。

楼上有点自主意识好伐?全部不知道哪复制来的。就这还来赚分?

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

(扶虏倩13883835213)如何用VB制作简单的局域网聊天工具? - ______ 用winsock控件,TCP模式:一个程序作为服务器一直处于监听状态,一个程序作为客户端连接服务器,连接成功后,用接收和发送两个方法收发数据即可,1对多,设置好IP和端口即可.UDP模式:直接利用IP和端口连接,1对1.

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

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

(扶虏倩13883835213)请问,在无盘局域网里,怎么用VB编个简单聊天工具? ______ 用文本文件保存聊天记录有点不现实,因为聊天记录常年下来会很多. 建议你用一个access数据库保存聊天记录,这样你也可以直接打开,而且方便查找,方便导出. 这样的聊天软件,可以这样写:聊天的程序只负责做两件事,一、将发言存到数据库中,二,将最新发言从数据库中读出来并现实. 不需要socket编程.

(扶虏倩13883835213)急求`!!VB做的网络点对点聊天程序 ______ 我也写过聊天程序,一般来说也就是使用winsock控件来通讯,我认真想过,但也没有想到特别方便的方法.我的做法是这样的:所有用户都有一个sc(0)在监听某个端口,比如1234.每次需要发送数据到其它计算机的时候,就load sc(newindex)...

(扶虏倩13883835213)需要用vb编程,编一个简单的聊天软件 - ______ socket or tcp server library using: system.net

(扶虏倩13883835213)vb如何使用winsock进行局域网聊天 - ______ 我只有UDP协议的 加入一个Winsock1控件,一个Label1,一个text1,一个command1,一个command2 winsock1的RemoteHost设为对方IP winsock1的LocalPort设为1000 winsock1的RemotePost设为1001 winsock1的Protocol设为1 - ...

(扶虏倩13883835213)如何用VB程序编写,实现局域网(TCP/IP)对话,简单就行,不需要太多的代码 - ______ 要用到winsock控件,在窗体中用text控件用来发送信息,在设置一个text用来放接收者的IP.用Command画一个发送按钮. 双击窗体,在\"load\"事件中写上,me.caption=winsock1.localIP;winsock.Localprot=大点的数字 在发送按钮的\"clock\"事件中写,ip=inputbox \"输入对方IP\",\"提示\" 在winsock1的控件中的\"Connect\"事件中写,winsock1.RemoteHostIP=ip winsock1.SendData=text and winsock1.localIP OK!

(扶虏倩13883835213)用vb编一个聊天工具,代码怎么写 - ______ 这好象不是一两句代码搞得定的,记得网上有一个源码,是老外写的,国内一个叫吴谤的人转了一下,在百度上找ZX Messenger,开源的代码