使用VB.net实现简单的聊天程序(socket服务端和客户端)

socket通讯是最常用的通讯协议,以服务器和客户端的形式体现,在VB.net中,也可以实现。
废话不多说,请看实例:
在visual studio2019中新建两个窗体项目,分别命名为server和client。
使用VB.net实现简单的聊天程序(socket服务端和客户端)_第1张图片
server窗体代码:
使用VB.net实现简单的聊天程序(socket服务端和客户端)_第2张图片

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





Public Class Form1

    Dim ip As IPAddress
    Dim port As Integer
    Dim ipe As IPEndPoint
    Dim s As Socket
    Dim svr As Socket

    Delegate Sub sockivo(dt As String)

    Dim data1 As String

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ip = IPAddress.Parse("127.0.0.1")
        port = 2000
        ipe = New IPEndPoint(ip, port)
        s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
        s.Bind(ipe)
        s.Listen(10)
        svr = s.Accept()

        Console.WriteLine("client:" & svr.RemoteEndPoint.ToString())

        Dim th1 As New Thread(AddressOf sockrec)
        th1.Start()



    End Sub

    Private Sub sockrec()


        While True

            Dim recbyte(1024) As Byte

            svr.Receive(recbyte)


            data1 = Encoding.GetEncoding("gb2312").GetString(recbyte)

            Dim sockivo1 As New sockivo(AddressOf sockrecdata)

            Me.Invoke(sockivo1, data1)

        End While






    End Sub

    Private Sub sockrecdata(dt As String)

        ListView1.Items.Add("clientA:" + dt + vbCrLf, 1)


    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click


        Dim sendbyt(1024) As Byte

        sendbyt = Encoding.GetEncoding("gb2312").GetBytes(TextBox1.Text)



        svr.Send(sendbyt)

        ListView1.Items.Add("me:" + TextBox1.Text + vbCrLf, 0)

        TextBox1.Clear()



    End Sub
End Class

client窗体代码:

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





Public Class Form1

    Dim ip As IPAddress
    Dim port As Integer
    Dim ipe As IPEndPoint
    Dim s As Socket

    Delegate Sub sockivo(dt As String)

    Dim data1 As String





    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ip = IPAddress.Parse("127.0.0.1")
        port = 2000
        ipe = New IPEndPoint(ip, port)
        s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

        s.Connect(ipe)

        Dim th1 As New Thread(AddressOf sockrec)
        th1.Start()

    End Sub


    Private Sub sockrec()


        While True


            Dim recbyt(1024) As Byte
            s.Receive(recbyt)
            data1 = Encoding.GetEncoding("gb2312").GetString(recbyt)
            Dim sockivo1 As New sockivo(AddressOf sockrecdata)

            Me.Invoke(sockivo1, data1)


        End While





    End Sub
    Private Sub sockrecdata(dt As String)



        ListView1.Items.Add("server:" + dt + vbCrLf, 0)




    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim sendbyt(1024) As Byte

        sendbyt = Encoding.GetEncoding("gb2312").GetBytes(TextBox1.Text)

        s.Send(sendbyt)

        ListView1.Items.Add("me:" + TextBox1.Text + vbCrLf, 1)

        TextBox1.Clear()


    End Sub
End Class

测试效果图:
使用VB.net实现简单的聊天程序(socket服务端和客户端)_第3张图片
源程序超链接:
https://download.csdn.net/download/normer123456/21733993

你可能感兴趣的:(VB.net实例应用,编程世界,vb.net)