0

私は vb.net でポーカー ゲームをコーディングしています。WAN か LAN かに関係なく、インターネットを使用してマルチプレイヤー ゲームを作成したいと考えています。どこから始めたらいいのかわからず、Google で何を検索すればよいのかもわかりません。ポートでリッスンする必要があり、パケットを送受信する必要があることはわかっています。Google での検索は役に立ちません。リンク/アイデアはありますか?

また、現在進行中のすべてのゲームのリスト ボックスを表示し、ユーザーが参加できるようにするにはどうすればよいでしょうか? そして、新しいゲームを作成する方法は?

4

1 に答える 1

1

UdpClient クラスを学習することをお勧めします。これは初心者に適したオプションです。

最初に、 2 つのクライアントを「セットアップ」することから始めます。1 つはデータを送信し、もう 1 つは着信データをリッスンします。クライアントに適切なアドレスとポート番号を割り当てたら、リッスンしているクライアントをループで開始して、一貫してデータをリッスンできるようにします。

次に、送信クライアントを何らかの形式のトリガーに「接続」して (以下に示す例では、送信クライアントをボタン イベントに設定しました)、不規則な間隔でデータを送信したり、クライアントをループに設定して、継続的にデータを送信します。

それが完了したら、送信するデータを文字列からバイト配列に変換する必要がありますその後、最終的にそれを送信できます。逆に、データを受信する場合も同様です (バイト配列から文字列へ)。

簡単な例を次に示します。

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


次に、利用可能なゲームのリスト ボックスを追加します。

簡単に言えば、サーバーがない限り、非常に難しいことです。

より長い答えは、サーバーが必要です。サーバーがあると仮定すると、サーバーに送信されるデータを処理し、他のユーザーにデータを送信するための追加のプログラムを作成する必要があります。

追加プログラムのセットアップ方法などについて説明することもできますが、ネットワーク プログラミングのスキルがまだ「翼を広げている」と判断した場合は、もう少し経験を積むまで、このような高度な機能を除外することをお勧めします。 、自信がついたら、自分で試してみてください。それでもまだ苦労している場合は、ここに質問を投げてください。

于 2013-05-24T13:10:37.340 に答える