VB.NET Socket TCP服务器和客户端

多线程, 1服务器, 多客户端

可以有多个客户端连入服务器,服务器对所有客户端群发。

模拟实验  使用场景 :多个客户端申请服务器TCP连接, 服务器把自己的数据,比如压力,温度等发送给所有的客户端(比如工程师站,现场监控屏幕等)

服务器:

 FORM代码

Imports System.Text

Public Class Form1
    Private message As String
    Private WithEvents modbusTcpSrv As ClsSocketTcpSvr
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        modbusTcpSrv = New ClsSocketTcpSvr
        Me.Text = modbusTcpSrv.startSvr("5450")
    End Sub

    Private Sub modbusTcpSrv_来客啦(ip As String) Handles modbusTcpSrv.来客啦
        Me.Invoke(显示到控件, ip)
    End Sub
    Private Sub modbusTcpSrv_客人问(data() As Byte, who As ClsClient) Handles modbusTcpSrv.客人说
        who.SendMessage(data) '例子,收到了,直接发回去
        message = Encoding.UTF8.GetString(data) ' Byte转为string
        message = who.ip + ":" + who.port + " -> " + message
        Me.Invoke(显示到控件, message)
    End Sub

#Region "显示到控件"
    Delegate Sub delegate显示到控件(message As String)
    Private 显示到控件 As New delegate显示到控件(AddressOf sub显示到控件)
    Private Sub sub显示到控件(message As String)
        LabRec.Text = message
    End Sub
#End Region

    Private Sub Btn群发_Click(sender As Object, e As EventArgs) Handles Btn群发.Click
        modbusTcpSrv.BroadcastMessage("r u ok?")

        '仅是示范显示连接列表
        ListBox1.Items.Clear()
        For Each c As ClsClient In modbusTcpSrv.clientList
            ListBox1.Items.Add(c.ip + ":" + c.port)
        Next

    End Sub
    Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
        modbusTcpSrv.kill()
        end
    End Sub
End Class

ClsSocketTcpSvr类

Imports System.Net.Sockets
Imports System.Net
Imports System.Threading
Imports System.Text

Public Class ClsSocketTcpSvr
    Dim sockedWatch As Socket
    Public clientList As New List(Of ClsClient)
    Dim threadWatch As Thread
    Public Event 来客啦(addr As String)
    Public Event 客人说(data() As Byte, client As ClsClient)

    Public
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值