用vb.net开发的简易服务器

在这里介绍程序主要实现的功能以及流程。
程序在启动后会开启1个线程,1个定时器,一个线程用来接受来自客户端的连接,定时器用来检测当前有多少个客户连接,当有一个客户连接是,会开启一个线程用来与客户传送消息。为了简单起见,服务器发送消息为广播发送。

全局变量:

  Dim listen_thread As Thread'监听线程
    Dim listener As Socket '套接字
    Public allDone As New ManualResetEvent(False)
    Dim Thread_listen As Thread

    Dim So As New ArrayList'已连接客户的集合
    Dim thread_lock As Object = New Object()'用于线程锁
    Dim Time As Timers.Time'定时器

   Public Class StateObject
        ' Client  socket.
        Public workSocket As Socket = Nothing
        ' Size of receive buffer.
        Public Const BufferSize As Integer = 1024
        ' Receive buffer.
        Public buffer(BufferSize) As Byte
        ' Received data string.
        Public sb As New StringBuilder
        Public size As Int32
    End Class 'StateObject

接受连接的线程过程;

    Public Sub listen_handle()
        TextBox3.AppendText(vbNewLine & "服务器启动")
        TextBox3.ScrollToCaret()
        While 1

            allDone.Reset()
            Try
                listener.BeginAccept(New AsyncCallback(AddressOf Accept_callback), listener)
            Catch e As Exception
                Exit Sub
            End Try
            allDone.WaitOne()
        End While
    End Sub

处理连接的线程过程:


 Public Sub Accept_callback(ar As IAsyncResult)
        allDone.Set() '让线程开始

        Dim waitDone As New ManualResetEvent(False)
        Dim socketi As Socket

        Try
            socketi = listener.EndAccept(ar)
        Catch ie As Exception
            Exit Sub
        End Try
        '显示出来
        TextBox3.AppendText(vbNewLine & "加入一个" & socketi.RemoteEndPoint.ToString)
        TextBox3.ScrollToCaret()
        Dim State As New StateObject()
        State.workSocket = socketi
        SyncLock thread_lock '/加入集合
            So.Add(socketi)
        End SyncLock
        State.size = 0
        Dim err As Int32 = 0
        While 1
            Try
                err = socketi.Receive(State.buffer)
            Catch e As Exception'接受异常说明客户端终止
                TextBox3.AppendText(vbNewLine & "客户端终止")
                TextBox3.ScrollToCaret()
                socketi.Close()
                SyncLock thread_lock
                    So.Remove(socketi)
                End SyncLock
                Exit Sub
            End Try
            If err > 0 Then '接收到消息并回调
                State.sb.Clear()
                State.sb.Append(Encoding.ASCII.GetString(State.buffer, 0, err))
                Dim str As String
                str = State.sb.ToString()
                TextBox1.AppendText(vbNewLine & str)
                TextBox1.ScrollToCaret()
            End If
        End While
    End Sub

定时器过程:

    Public Sub Time_hande()
        Dim str As String = ""
        SyncLock thread_lock '
            For Each member As Socket In So
                str = str & member.RemoteEndPoint.ToString() & vbNewLine
            Next
        End SyncLock
        TextBox6.Text = str
    End Sub

界面:
这里写图片描述

github:https://github.com/fengasdf/WindowsApplication4/blob/master/WindowsApplication4/Form1.vb

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ASP NET精彩编程百例 pdf 学习ASP NET的必看书籍 讲述了100个ASp NET实例的来笼去脉 由这些实例扩展出许多值得学习的ASP NET技巧 是您学习ASP NET的必看知识 ASP NET是微软.NET战略中的一个重要成员 除了可以使用Visual C# VB.NET VisualC++ NET JScript.NET等语言编写外 还可以使用第三方的.NET接口 如COBOL.NET Perl.NET等 进行编写 本书通过100个精彩实例 由浅入深介绍了ASP NET网络程序设计的编程方法与实用技巧 为了方便读者学习与深入理解ASP NET 本书将这100 个实例分为4篇 即基础编程实例 中级编程实例 高级编程实例与混合编程实例 在每个实例中 除了介绍ASP NET中所提供的基础知识点及编程技巧外 还介绍了ASP NET在网络编程 图形编程 多媒体编程 Mobile 移动通信 等方面的重要应用及开发技术 本书附赠一张光盘 其中包括全部100个实例源代码及可执行文件 详细内容请参见光盘中的“本书配套光盘说明.txt” 本书体系结构清晰 解释说明详尽 开发实例典型 适合于计算机编程用户 网络用户及对ASP NET感兴趣的用户阅读 也可作为ASP NET培训参考书 书籍目录: 第1篇ASP NET基础编程实例 实例1一个HTML化的ASP NET程序 实例2ASP+WebForms广告轮换控制过程 实例3驱动器列表应用 实例4列出当前盘上目录和文件 实例5使用“文件预览”显示文件夹信息 实例6使用递归循环以显示目录列表 实例7在ASP 7NET中随意创建图形信息 实例8在ASP 8NET中显示事件日志记录 1 实例9在ASP 9NET中显示事件日志记录 2 实例10在ASP 10NET中使用DataGrid分页 实例11在ASP 11NET访问Excel2000 XP文件 实例12显示当前浏览器头信息 实例13利用ASP NET获取主机名和IP地址 实例14由域名获取其IP地址 实例15由IP地址获得其域名 实例16ASP NET中的正则表达式应用 实例17主机远程控制与探测应用 实例18ASP NET控件———AdRotator应用 实例19ASP NET日历程序 实例20查看主机内存情况 实例21ASP NET简易应用程序“Hello 22World ” 实例22读取Config 22Web配置文件 实例23显示BrowseCaps配置段内容 实例24写入文件操作与应用 实例25文件读操作及应用 实例26文件删除与应用 实例27ASP NET中异常处理及其应用 实例28AutoPostBack技术及其应用 实例29用户合法性验证与应用 实例30ASP 30NET列表框应用 实例31Calendar控件操作与应用 实例32用户操作验证与应用 实例33CompareValidator服务器比较控件操作与应用 实例34CustomValidator控件操作与应用 实例35服务器端控件ValidationSummary应用操作 实例36HtmlTable控件操作与应用 实例37在HTML控件中运用样式 实例38在Web服务器控件中运用样式 第2篇ASP NET中级编程实例 第3篇ASP NET高级编程实例 本站提供的ASP NET编程百例 PDF扫描版 附源代码(vb net)资源来源互联网 版权归该下载资源的合法拥有者所有 收起信息返回顶部
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值