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

Public Class frmServer

'服务端的Socket
    Dim listener As Socket
    '与客户端会话的Socket
    Dim mySocket As Socket
    '服务端的运行状态
    Dim IsRun As Boolean = False
    Dim IsThread1 As Byte = 0
    '监听接收数据线程
    Dim myThread As Thread

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myThread = New Thread(AddressOf Listen)
        Timer1.Enabled = True
        Timer1.Interval = 1000
        TextBox2.Text = "192.168.3.50"
    End Sub

Public Sub Listen()
        Dim bytes() As Byte = New [Byte](102400) {}
        Dim data As String = String.Empty
        Dim tokens() As String
        If (IsThread1 = 1) Then
            BeginInvoke(New EventHandler(AddressOf AddInfo), "线程重新启动,正在等待连接......")
            IsThread1 = 0
        Else
            Dim localEndPoint As New IPEndPoint(Net.IPAddress.Parse(TextBox2.Text), 2052)
            '初始化socket
            listener = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            '绑定端口
            listener.Bind(localEndPoint)
            '开始监听
            listener.Listen(10)

BeginInvoke(New EventHandler(AddressOf AddInfo), "服务端已启动,正在等待连接......")
            BeginInvoke(New EventHandler(AddressOf AddInfo), "正在等待连接......")
        End If

mySocket = listener.Accept()
        IsRun = True
        
        While True
            Dim bytesRec As Integer = mySocket.Receive(bytes)
            data = Encoding.UTF8.GetString(bytes, 0, bytesRec)

tokens = data.Trim.Split("|")
            Select Case tokens(0) '分析接收到的数据,可自己定义更多一些
                Case "0Xaa"
                    BeginInvoke(New EventHandler(AddressOf AddInfo), tokens(1))  'Invoke保证线程安全
                Case "Exit"
                    IsRun = False
                    BeginInvoke(New EventHandler(AddressOf AddInfo), tokens(1))  'Invoke保证线程安全
                    mySocket.Shutdown(SocketShutdown.Both)
                    mySocket.Close()
                    IsThread1 = 1
                    myThread.Abort()
                    Exit Sub
            End Select
        End While

End Sub

'发送信息
    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
        Dim msg As Byte() = Encoding.UTF8.GetBytes("0Xaa|" + TextBox1.Text)
        mySocket.Send(msg)
        ListBox1.Items.Add("0Xaa" + TextBox1.Text)
        'TextBox1.Text = ""
    End Sub

'非UI线程调用窗体控件,保证线程安全。与聊天实现无关。
    Sub AddInfo(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ListBox1.Items.Add("0Xaa " + sender.ToString)
    End Sub

'关闭窗口时发关退出信息并清理资源
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If IsRun Then
            Dim msg As Byte() = Encoding.UTF8.GetBytes("Exit|服务端退出: " + Me.Handle.ToString)
            Dim bytesSent As Integer = mySocket.Send(msg)
        End If
        listener.Close()
        mySocket = Nothing
        myThread.Abort()
    End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1.Enabled = False
        myThread.Start()
    End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If (IsThread1 = 1) Then
            myThread = New Thread(AddressOf Listen)
            myThread.Start()
        End If
    End Sub
End Class

VB2010网络通信服务器相关推荐

  1. 网络通信服务器小型框架

    网络通信服务器小型框架 网络通信服务器 N线程对N客户端 事件分发 参考开源库方案 网络通信服务器 N线程对N客户端 原理 ClientServerThreadN(client)connectclie ...

  2. Socket之TCP服务器【Python】

    下面是其他相关的终端的创建: Socket之TCP客户端[Python] Socket之UDP服务器[Python] Socket之UDP客户端[Python] 创建TCP服务器 首先,我们先创建一段 ...

  3. 2022-8-011 第七小组 学习日记 (day35)网络通信

    目录 网络通信 服务器: 客户端: 例1: 实例运行结果: 例2: 实例运行结果:​ 通过UDP(不可靠的传输协议)进行传输 URL 两种架构: java主要要做的就是架构中的Server端 web服 ...

  4. 从根上理解高性能、高并发(六):通俗易懂,高性能服务器到底是如何实现的

    本文原题"高并发高性能服务器是如何实现的",转载请联系作者. 1.系列文章引言 1.1 文章目的 作为即时通讯技术的开发者来说,高性能.高并发相关的技术概念早就了然与胸,什么线程池 ...

  5. 计算机科学精彩帖子收集

    linux源码 LXR 源自"the Linux Cross Referencer",中间的"X"形象地代表了"Cross".与 Sourc ...

  6. 分布式系统理论之租约机制学习

    一,租约机制介绍 在分布式系统中,往往会有一个中心服务器节点.该节点负责存储.维护系统中的元数据.如果系统中的各种操作都依赖于中心服务器上的元数据,那么中心服务器很容易成为性能瓶颈及存在单点故障.而通 ...

  7. 机房环境动力监控系统功能介绍及设计需求规划和选择

    如果需要对机房动力环境监控系统进行一个概要了解的,可以阅读以下文章. 机房环境动力监控系统功能介绍及设计需求规划和选择 在信息化建设中,机房运行处于信息交换管理的核心位置.机房内所有设备必须时时刻刻正 ...

  8. 浅谈地面生产系统智能化配电室的应用与研究

    张宇然 安科瑞电气股份有限公司   上海嘉定   201801 摘要:随着社会的进步.城市的发展,智能设备已经与人们生活息息相关,本文就智能化在配电室的实施应用进行分析也为以后推广实施奠定基础. 关键 ...

  9. 自考计算机网络技术04741

    1.物理层协议的四个特性:物理特性(机械特性).电气特性.功能特性.规程特性 2.A类地址1.0.0.0到127.255.255.255:B类地址128.0.0.0到191.255.255.255:C ...

  10. 《RocketMQ源码分析》NameServer如何处理Broker的连接

    <RocketMQ源码分析>NameServer如何处理Broker的连接 NameServer 介绍 NameServer 功能 动态路由发现和注册 服务剔除 创建NameServerC ...

最新文章

  1. 【SDOI2017】天才黑客
  2. Win2000 DDK 附带例子概览(图解)
  3. Zigbee 获取设备地址信息
  4. SAP UI5 的 兼容性规则 Compatibility Rules
  5. c51单片机有几个终端语言,吃过大亏,才知道要从51单片机入手
  6. tinycore php,tinycore中文支持
  7. mysql卸载时弹框,win10卸载mysql5安装mysql8
  8. jboss 配置上下文路径_为单个Web应用程序配置多个上下文根– JBoss
  9. 前端学习(2693):重读vue电商网站14之步骤条的使用与美化
  10. Apache Log4j2 远程代码执行高危漏洞 解决方案
  11. 图形学初探(一)图形学基础和基本术语
  12. jeecgboot 查询_Jeecg-Boot 技术文档
  13. oracle pl/sql如何定义变量
  14. Mac eclipse adt sdkmanager打不开
  15. python的快速认识(二)
  16. cmos逻辑门传输延迟时间_【转载】CMOS与TTL电路的区别
  17. wkhtmltopdf工具将网站转换成pdf或图片
  18. Clonezilla 再生龙
  19. 视频字幕文件 SSA、ASS 参数-攻略
  20. 重要!我的公众号要改名了(一些感想...)

热门文章

  1. 织梦 php模板修改,织梦专题模板修改.doc
  2. C++ 鼠标乱动整人代码
  3. AJax视频教程适高级篇+源码(2G)25讲
  4. python分段函数输入x的值求y的值,根据以下分段函数计算y的值,要求x的值由键盘输入,...
  5. JavaScript开发者应懂的33个概念js-33-concepts
  6. 离职后前公司老大叫我回去帮忙,怎么委婉拒绝?
  7. [转载]JXTA技术与应用发展
  8. 计算机杀病毒软件的应用有哪些,电脑杀蠕虫病毒软件有哪些
  9. HTML+CSS实现小米登录界面
  10. Windows 和 Linux 上安装 TTF 字体的方法