Vb.net 在线多人游戏发送/接收信息

Vb.net 在线多人游戏发送/接收信息,vb.net,client-server,tcpclient,udpclient,Vb.net,Client Server,Tcpclient,Udpclient,我正在vb.net中编写一个扑克游戏,我想使用internet创建一个多人游戏,无论是在广域网还是局域网上。我真的不知道从哪里开始,也不知道在谷歌上搜索什么。我知道我必须在一个端口上监听,我需要发送和接收数据包。谷歌上的搜索没有任何帮助。有链接/想法吗 另外,我如何显示当前正在进行的所有游戏的列表框并允许用户加入?以及如何创建新游戏?我建议学习,这是初学者的好选择 首先“设置”两个客户端,一个用于发送数据,另一个用于侦听传入数据。一旦为客户机分配了适当的地址和端口号,就可以在循环中启动侦听客户机

我正在vb.net中编写一个扑克游戏,我想使用internet创建一个多人游戏,无论是在广域网还是局域网上。我真的不知道从哪里开始,也不知道在谷歌上搜索什么。我知道我必须在一个端口上监听,我需要发送和接收数据包。谷歌上的搜索没有任何帮助。有链接/想法吗


另外,我如何显示当前正在进行的所有游戏的列表框并允许用户加入?以及如何创建新游戏?

我建议学习,这是初学者的好选择

首先“设置”两个客户端,一个用于发送数据,另一个用于侦听传入数据。一旦为客户机分配了适当的地址和端口号,就可以在循环中启动侦听客户机,这样就可以始终如一地侦听数据

然后将发送客户端“连接”到某种形式的触发器上(在下面的示例中,我将发送客户端设置为按钮事件),这样就可以不定期发送数据,也可以将客户端设置为循环以连续发送数据

完成后,现在需要将要发送的数据从字符串转换为字节数组,然后才能最终发送数据,反之亦然,以接收数据(从字节数组到字符串)

这里有一个简单的例子

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

Public Class Form1

    Private Const port As Integer = 9653 'Or whatever port number you want to use
    Private Const broadcastAddress As String = "255.255.255.255"
    Private receivingClient As UdpClient
    Private sendingClient As UdpClient

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        InitializeSender()
        InitializeReceiver()
    End Sub

    Private Sub InitializeSender()
        sendingClient = New UdpClient(broadcastAddress, port) 'Use broadcastAddress for sending data locally (on LAN), otherwise you'll need the public (or global) IP address of the machine that you want to send your data to
        sendingClient.EnableBroadcast = True
    End Sub

    Private Sub InitializeReceiver()
        receivingClient = New UdpClient(port)
        ThreadPool.QueueUserWorkItem(AddressOf Receiver) 'Start listener on another thread
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim stringToSend As String = TextBox1.Text 'Assuming you have a textbox with the data you want to send
        If (Not String.IsNullOrEmpty(stringToSend)) Then
            Dim data() As Byte = Encoding.ASCII.GetBytes(stringToSend)
            sendingClient.Send(data, data.Length)
        End If
    End Sub

    Private Sub Receiver()
        Dim endPoint As IPEndPoint = New IPEndPoint(IPAddress.Any, port) 'Listen for incoming data from any IP on the specified port
        Do While True 'Notice that i've setup an infinite loop to continually listen for incoming data
            Dim data() As Byte
            data = receivingClient.Receive(endPoint)
            Dim message As String = Encoding.ASCII.GetString(data) 'Recived data as string
        Loop
    End Sub
End Class

现在为可用游戏添加列表框

简而言之,除非你有一个服务器,否则这是不可能的

回答得越长,您将需要一个服务器,并且假设您有一个服务器,您将需要创建一个额外的程序来处理发送给它的数据,并将数据发送给其他用户


我可以继续解释如何设置附加程序等,但鉴于您的网络编程技能仍在“展翅”,我建议您在获得更多经验之前,不要使用此类高级功能,然后,当你更有信心的时候,自己试试看,如果你还在挣扎,就在这里提出一个问题,我相信有人会帮助你

首先学习如何使用TcpClient和TcpListener。互联网上有很多例子。首先为局域网开发,因为它简化了事情…好的,那么我可以指定一个IP地址,这样用户就可以和他的朋友一起参加游戏了吗?顺便说一句,谢谢你的代码。是的,(公共)IP地址将是你服务器的地址。欢迎光临。