VB LAN Messenger出现问题

时间:2017-12-14 21:06:04

标签: vb.net tcp messenger instant

我已经制作了一个小型局域网信使,我用两台电脑试了一下它并没有用,但运行两个应用程序,其中一个监听端口40004并写入40005,一个监听40005并写入40004工作。 问题似乎在sendb_click我发送消息的地方。它说Receipent没有连接。 错误讯息:

System.net.sockets.socketexception (0x80004005); No connection could be made 
because the target machine actively refused it 127.0.0.1:40003 
at system.net.sockets.tcpclient..ctor(string hostname,int32 port)
at messenger.form2.sendb_click(object sender, eventargs e) in 
D:\Messenger\Messenger\Form2.vb:line 97

Interface 连接后,您可以选择连接到右侧网络的计算机并发送消息。我计划生成端口或其他什么,但测试我刚刚制作了40004和40005端口。

出了什么问题?我必须向前移动吗?

下面是我的代码

Imports System.Net.Sockets
Imports System.Threading
Imports System.IO
Imports System.Net.Dns
Imports System.DirectoryServices

Public Class Form2
Class entity
    Public name As String
    Public ip As String
    Public port As Integer
End Class

Public reciepent As New entity
Public user As New entity
Public CLient As New TcpClient
Public listener As New TcpListener(40003)

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    usernametb.Text = user.name
    FindingThreats()
    getmyip()
    ipl.Text = user.ip
    user.port = 40003
    portl.Text = user.port
    ' listener = New TcpListener(40004)
    Dim ListThread As New Thread(New ThreadStart(AddressOf Listening))
    ListThread.Start()
End Sub


Private Sub Listening()
    listener.Start()
End Sub

Sub FindingThreats()
    UsersL.Items.Clear()
    Dim childEntry As DirectoryEntry
    Dim ParentEntry As New DirectoryEntry
    Try
        ParentEntry.Path = "WinNT:"
        For Each childEntry In ParentEntry.Children
            Select Case childEntry.SchemaClassName
                Case "Domain"

                    Dim SubChildEntry As DirectoryEntry
                    Dim SubParentEntry As New DirectoryEntry
                    SubParentEntry.Path = "WinNT://" & childEntry.Name
                    For Each SubChildEntry In SubParentEntry.Children
                        Select Case SubChildEntry.SchemaClassName
                            Case "Computer"
                                UsersL.Items.Add(SubChildEntry.Name)
                        End Select
                    Next
            End Select
        Next
    Catch Excep As Exception
        MsgBox("Error While Reading Directories : " + Excep.Message.ToString)
    Finally
        ParentEntry = Nothing
    End Try
End Sub

Sub getmyip()
    For Each ip As Net.IPAddress In
        GetHostEntry(GetHostName).AddressList
        user.ip = ip.ToString
    Next
End Sub

Sub getip(strhostname As String, returnip As String)
    Try
        returnip = GetHostByName(strhostname).AddressList(0).ToString()
        reciepent.ip = returnip
    Catch
        MsgBox("This user is Offline.")
    End Try
End Sub

Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles UsersL.SelectedIndexChanged
    CUL.Items.Clear()
    CUL.Items.Add("Connected Users:")
    Dim ip As String
    Dim hostname = UsersL.SelectedItem.ToString
    getip(hostname, ip)
    reciepent.port = 40004
    Timer1.Enabled = True
    CUL.Items.Add(user.name)
End Sub

Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
    Me.Close()
End Sub

Private Sub SendB_Click(sender As Object, e As EventArgs) Handles SendB.Click
    Try
        CLient = New TcpClient("127.0.0.1", 40004) 'reciepent.port)
        Dim Writer As New StreamWriter(CLient.GetStream())
        Writer.Write(ChatB.Text)
        ChatL.Items.Add("> " & ChatB.Text)
        Writer.Flush()
    Catch
        MsgBox("Receipent not connected.")
    End Try
End Sub

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim message As String
    If listener.Pending = True Then
        message = ""
        CLient = listener.AcceptTcpClient()
        Dim Reader As New StreamReader(CLient.GetStream())
        While Reader.Peek > -1
            message = message + Convert.ToChar(Reader.Read()).ToString
        End While
        ChatL.Items.Add("< " & message)
    End If
End Sub

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

Private Sub Form2_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    listener.Stop()
    Me.Close()
End Sub
End Class

0 个答案:

没有答案