使用 DotNet 的聊天应用程序






2.91/5 (21投票s)
2007 年 7 月 5 日
1分钟阅读

93039

20067
使用 VB.Net (并发服务器) 的聊天应用程序
引言
使用 VB.Net 中的套接字编程实现的简单聊天应用程序。此应用程序使用 TCP 协议进行通信。因此,它是一种面向连接且可靠的服务……
背景
主要背景是 VB.NET 中的套接字编程,它使用 System.Net.Sockets 命名空间…
客户端套接字::: TcpClient 类
服务器套接字:: TcpListner 类
套接字是 IP_Address 和 PortNo 的组合。当我们创建套接字时,必须提供 IP、Port No 和协议…
这里 DotNet 提供了 TcpClient 类,默认使用 TCP 协议。我们只需要提供 IP 和 PortNo 即可…
同样,对于 TcpListner 类也是如此……
使用代码
Connect 子例程会将连接请求发送到给定 ip 的服务器
连接接收函数使用线程启动…因为接收函数会进入无限循环,所以我们必须使用线程启动接收函数。否则,您的主进程将进入无限循环…
// Public Sub Connect() Try ipHostinfo = Dns.Resolve(Txtserver.Text) ipAdd = ipHostinfo.AddressList(0) remoteEP = New IPEndPoint(ipAdd, 11000) sender.Connect(remoteEP) th = New System.Threading.Thread(AddressOf Receive) th.Start() i = 1 MessageBox.Show("Client Connected With Server->" + Txtserver.Text) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub
如果我们使用多线程架构,我们会遇到一个主要问题,称为:跨线程问题
使用委托函数解决此问题。这里是解决方案
If Me.List.InvokeRequired Then
Dim d As New SetDisplay(AddressOf Proccessdata)
Me.Invoke(d, New Object() {str})
Else
Me.List.Items.Add(str)
Public Sub Receive()
Dim bytes(100000) As Byte
Dim bytesRec As Integer
A: While True
bytes = New Byte(100000) {}
bytesRec = sender.Receive(bytes)
If bytesRec > 0 Then
Data = Encoding.ASCII.GetString(bytes, 0, bytesRec)
Exit While
End If
End While
'List.Items.Add(Data)
'MessageBox.Show(Data)
Proccessdata(Data)
ActionData(Data)
GoTo A
End Sub
Try
msg = Encoding.ASCII.GetBytes(Txtmsg.Text)
Me.sender.Send(msg)
Txtmsg.Text = ""
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
关注点
这是客户端屏幕的一部分。一个有趣的点是我们可以从客户端表单控制服务器光驱…
您可以在服务器机器上从客户端屏幕打开记事本、画笔、计算器……
您可以从服务器锁定和释放客户端电脑的鼠标……
您可以从服务器关闭和重启客户端电脑……
您可以从服务器捕获客户端屏幕的照片……
历史
在此处保持您所做的任何更改或改进的实时更新。