vbnet聊天源码 vb聊天代码

VB Winsock最简单的;聊天程序源代码

这个是我以前学习的一个实例。希望对你有帮助!!!

创新互联建站是一家专业从事网站制作、成都网站制作、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,创新互联建站依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!

用VB实现客户——服务器(TCP/IP)编程实例

-

现在大多数语言都支持客户-服务器模式编程,其中VB给我们提供了很好的客户-服务器编程方式。下面我们用VB来实现TCP/IP网络编程。

TCP/IP协议是Internet最重要的协议。VB提供了WinSock控件,用于在TCP/IP的基础上进行网络通信。当两个应用程序使用Socket进行网络通信时,其中一个必须创建Socket服务器侦听,而另一个必须创建Socket客户去连接服务器。这样两个程序就可以进行通信了。

1.创建服务器,首先创建一个服务端口号。并开始侦听是否有客户请求连接。

建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件)

添加两文本框Text1,Text2,和一按钮Command1

Private Sub Form_Load()

SockServer.LocalPort = 2000 ′服务器端口号,最好大于1000

SockServer.Listen ′开始侦听

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockServer.Close

End Sub

Private Sub SockServer_Close()

SockServer.Close

End Sub

Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)

SockServer.Close

SockServer.Accept requestID ′表示客户请求连接的ID号

End Sub

′当客户向服务器发送数据到达后,产生DataArrival事件,在事件中接收数据,GetData方法接收数据。

Private Sub SockServer_Data

Arrival(ByVal bytesTotal As Long)

Dim s As String

SockServer.GetData s

Text1.Text = s

End Sub

当我需要向客户发送数据时,只需调用SendData方法。

Private Sub Command1_Click()

SockServer .SendData Text2.Text

text1.text = text2.text

text2.text = ""

End Sub

2.创建客户。要创建客户连接服务器,首先设置服务器主机名,如IP地址、域名或计算机名,然后设置服务器端口,最后连接服务器。

建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件),取名为:SockC1。添加两文本框Text1,Text2,和一按钮Command1

Private Sub Form_Load()

dim my as string

my = SockCl.RemoteHostIP

SockCl.RemoteHost = my

′表示服务器主机名

SockCl.RemotePort = 2000

′表示服务器端口名

SockCl.Connect

′连接到服务器

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockCl.Close

End Sub

Private Sub SockCl_Close()

SockCl.Close

End Sub

Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)

Dim s As String

SockCl.GetData s ′接收数据到文本框中

Text1.Text = s

End Sub

Private Sub Command1_Click()

SockCl.SendData Text2.Text ′向服务器发送数据

text1.text = text2.text

text2.text = ""

End Sub

3.进行通信。把这两个窗体分别编译成两个EXE文件,服务器Server.exe和客户Client.exe程序,并把它们分别安装在服务器端和客户端,这样就可以实现两者通信了。

------------------------------------整理后的代码如下-------------------------------

Private Sub Form_Load()

Dim my As String

my = SockCl.RemoteHostIP

SockCl.RemoteHost = my

SockCl.RemotePort = 2000

SockCl.Connect

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockCl.Close

End Sub

Private Sub SockCl_Close()

SockCl.Close

End Sub

Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)

Dim s As String

SockCl.GetData s

Text1.Text = s

End Sub

Private Sub Command1_Click()

SockCl.SendData Text2.Text

Text1.Text = Text2.Text

Text2.Text = ""

End Sub

Private Sub Form_Load()

SockServer.LocalPort = 2000

SockServer.Listen

End Sub

Private Sub Form_Unload(Cancel As Integer)

SockServer.Close

End Sub

Private Sub SockServer_Close()

SockServer.Close

End Sub

Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)

SockServer.Close

SockServer.Accept requestID

End Sub

Private Sub Command1_Click()

SockServer.SendData Text2.Text

Text1.Text = Text2.Text

Text2.Text = ""

End Sub

Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)

Dim s As String

SockServer.GetData s

Text1.Text = s

End Sub

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

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

求个vb聊天程序源代码

加一个WInsock1控件,两个文本框(txtMess、txtSend)和一个按钮,代码如下Private Sub Command1_Click()

Winsock1.SendData txtSend.Text '发送聊天内容

txtSend.Text = "" '聊天内容清空

End SubPrivate Sub Form_Load()

Dim my As String

Winsock1.Protocol = sckUDPProtocol '设置为UDP协义

Winsock1.LocalPort = 60 '随便设置,不过两个要一样

Winsock1.RemotePort = 60

my = Winsock1.LocalIP '取得自己的IP地址,是不要的

Winsock1.RemoteHost = my '这里应该是改为别人计算机的IP,由于自己是单机,所以就设置成自己的,自己给自己发信息,可以拿另一台主机试试End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '取到数据时发生

Dim Tmp As String

Winsock1.GetData Tmp, vbString '取得数据

Tmp = "对方IP地址:" + Winsock1.RemoteHostIP + "发送内容为--" + Tmp

txtMess.Text = Tmp + Chr$(13) + Chr$(10) + txtMess.Text '换行输出聊天信息

End Sub语句超简单,我用了几小时才弄出。


名称栏目:vbnet聊天源码 vb聊天代码
文章路径:http://azwzsj.com/article/ddjecip.html