0

我正在使用 vb.net 中的套接字编程技术制作一个简单的聊天系统。它在本地网络上运行良好,但如何通过互联网使用它..我也尝试在我的路由器上进行端口转发......可能是我的方式是错误的。请告诉我端口转发的正确方法..并告诉我如何将客户端连接到服务器???我必须使用服务器系统的公共 IP 吗???

服务器端代码是这样的:

    Imports System.Net.Sockets
    Module Module1

        Sub Main()
    Console.WriteLine("")
    Dim clientListener As New TcpListener(12380)
    clientListener.Stop()
    clientListener.Start()
    Console.WriteLine("")
    Dim mySocket As Socket = clientListener.AcceptSocket()
    Console.WriteLine("")
    Dim recieveBuff(225) As Byte
    mySocket.Receive(recieveBuff, recieveBuff.Length, SocketFlags.None)
    Dim str As String = System.Text.Encoding.ASCII.GetString(recieveBuff, 0, recieveBuff.Length).Trim(Microsoft.VisualBasic.ChrW(0))
    While Not str.StartsWith(".")
        Console.WriteLine(str)
        mySocket.Receive(recieveBuff, recieveBuff.Length, SocketFlags.None)
        str = System.Text.Encoding.ASCII.GetString(recieveBuff, 0, recieveBuff.Length).Trim(Microsoft.VisualBasic.ChrW(0))
    End While
    Console.WriteLine("")
    clientListener.Stop()
    End Sub

    End Module

客户端代码是这样的:(这两个都是控制台应用程序)

    Imports System.Net.Sockets
    Imports System.IO

    Module Module1

    Sub Main()

    Try
        Console.WriteLine("Connecting to localhost ")
        Dim serverListener As New TcpClient("192.168.1.103", 12380)
        Dim readStream As Stream = serverListener.GetStream
        serverListener.SendBufferSize = 256
        Console.WriteLine("Input Lines:")
        Dim str As String = Console.ReadLine()
        While 370
            Dim sendBuff As Byte() = System.Text.Encoding.ASCII.GetBytes(str)
            readStream.Write(sendBuff, 0, sendBuff.Length)
            If str.StartsWith(".") Then
                GoTo Done
            End If
            str = Console.ReadLine()

        End While
       Done:       Console.WriteLine("Done")
        Catch exp As Exception
        Console.WriteLine("Exception: " + exp.ToString())
       End Try
       End Sub
       End Module
4

2 回答 2

0

首先,您需要在路由器中启用端口转发,端口应位于 49152 和 65535 之间,地址将是服务器的私有地址,例如:“192.168.1.x”
确保您开始在新端口中侦听服务器( 49152 和 65535 之间的那个)
然后去canyouseeme.org

并输入您使用的新端口,如果结果成功而不是您的配置正确并且您的服务器现在可以通过互联网访问,请按 检查端口,如果结果是红色错误那么您可能做错了,可能是防火墙问题,或者你需要更换路由器。 如果你成功了,那么你必须在每个客户端而不是旧客户端中更改此行:

      Dim serverListener As New TcpClient(YourPublicIpAdrees,NewPort)    

要获取您的公共 IP 地址,请转到此处myip
这是如何通过互联网发送套接字,尝试并评论您的结果。

于 2015-01-16T17:34:30.873 回答
0

如果客户端在您的 LAN 之外,您将需要使用公共 IP。

于 2013-10-07T13:51:11.323 回答