前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VB.NET 服务端源码

VB.NET 服务端源码

作者头像
一线编程
发布2019-07-22 14:59:16
8090
发布2019-07-22 14:59:16
举报
文章被收录于专栏:办公魔盒

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

Public Class Frm_tcp Dim Socketlisten As Socket '服务器Socket Dim b4aSocket As Socket '客户端Socket Dim Socketst As Boolean = False 'Socket状态 Dim listenThread As Thread 'Socket侦听进程

代码语言:javascript
复制
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
    exit_listen()
    End
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    txt_ip.Text = Get_Ip()
    txt_prot.Text = 8880
    create_listen()
End Sub
Public Sub Listenb4a()
    Dim temp() As Byte = New [Byte](51200) {} '定义字节数组
    Dim get_data As String = ""
    Dim arr() As String
    Dim localEndPoint As New IPEndPoint(Net.IPAddress.Parse(txt_ip.Text), txt_prot.Text)
    Socketlisten = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)  '初始化socket
    Socketlisten.Bind(localEndPoint) '绑定端口
    Socketlisten.Listen(10) '开始监听
    '------------------------------------
    b4aSocket = Socketlisten.Accept
    Socketst = True
    While True
        Dim bytesRec As Integer = b4aSocket.Receive(temp)
        get_data = Encoding.UTF8.GetString(temp, 0, bytesRec)
        arr = get_data.Trim.Split("|")
        If arr(0) <> "" Then
            BeginInvoke(New EventHandler(AddressOf addlist), arr(0)) 'Invoke保证线程安全
        Else
            exit_listen()
            Socketst = False
        End If
    End While
End Sub

Sub addlist(ByVal sender As System.Object, ByVal e As System.EventArgs) '保证线程安全
    get_list.Items.Add(sender.ToString)
End Sub
Sub addtxt(ByVal sender As System.Object, ByVal e As System.EventArgs) '保证线程安全
    bt_st.Text = (sender.ToString)
End Sub
'退出侦听
Sub exit_listen()
    If Socketst = True Then
        Dim msg As Byte() = Encoding.UTF8.GetBytes("服务端退出....")
        Dim bytesSent As Integer = b4aSocket.Send(msg)
        BeginInvoke(New EventHandler(AddressOf addtxt), "停止侦听")
        Socketst = False
    End If
    Socketlisten.Close()
    b4aSocket = Nothing
    listenThread.Abort()
    bt_st.Text = "停止侦听"
End Sub
Sub create_listen() '创建侦听
    listenThread = New Thread(AddressOf Listenb4a)  '创建侦听新进程
    listenThread.Start()  '侦听进程开始
    bt_st.Text = "正在侦听"
End Sub
'获取本机IP地址
Public Function Get_Ip() As String
    Dim hostName As String = System.Net.Dns.GetHostName.ToString
    Dim IPString As String = "127.0.0.1"
    Dim ip As System.Net.IPAddress
    For Each ip In System.Net.Dns.GetHostEntry(hostName).AddressList()
        If ip.AddressFamily = Net.Sockets.AddressFamily.InterNetwork Then
            IPString = ip.ToString
            Exit For
        End If
    Next
    Return IPString
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_st.Click
    If listenThread.ThreadState = 0 Then
        exit_listen()
    ElseIf listenThread.ThreadState > 0 Then
        create_listen()
    End If
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim tmp As String = ""
    Dim path As String = "C:\Users\" & Environment.UserName & "\Desktop\手机扫码枪记录.txt"
    Dim i As Integer = 0
    While i < get_list.Items.Count
        tmp += get_list.Items(i) + vbCrLf
        i += 1
    End While
    Dim sw As New StreamWriter(path)
    sw.Write(tmp)
    sw.Flush()
    sw.Close()
    MessageBox.Show("记录导出成功!" & vbCrLf & "保存路径: " & path, "手机扫码枪")
End Sub

End Class

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 办公魔盒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档