2013-05-23 2 views
0

Я кодирую покерную игру в vb.net, и я хочу создать многопользовательскую игру с использованием Интернета, будь то в WAN или LAN. Я действительно не знаю, с чего начать, и я не знаю, что искать в Google. Я знаю, что мне придется слушать порт, и мне нужно отправлять и получать пакеты. Поиск в Google не помогает. Любые ссылки/идеи?Онлайн многопользовательская игра Отправить/получить информацию

Также, как я могу показать окно списка всех игр, которые в настоящее время находятся в процессе, и разрешить пользователю присоединиться? А как создать новую игру?

+0

Начните с изучения того, как использовать TcpClient и TcpListener. В Интернете много примеров. Сначала создайте локальную сеть, так как она упрощает ... –

ответ

1

Я бы рекомендовал изучить UdpClient class, это хороший вариант для новичков.

Вы сначала начинаете с «настройки» двух клиентов, один для отправки данных, и один для прослушивания входящих данных. После того, как вы назначили клиентов с соответствующими адресами и номерами портов, вы затем запустите клиент прослушивания в цикле, чтобы вы могли последовательно слушать данные.

Затем вы подключаете свой отправляющий клиент к какой-либо форме триггера (в приведенном ниже примере я установил мой клиент отправки на событие кнопки), чтобы вы могли отправлять данные с нерегулярными интервалами , или вы можете настроить клиента в цикле для непрерывной отправки данных.

После того, как вы это сделали, вам нужно будет преобразовать данные, которые вы хотите отправить , отправить из строки в массив байтов, после чего вы можете, наконец, отправить его, и наоборот, для получения данных (от байтового массива до строки).

Вот простой пример,

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 


И теперь для добавления окна списка доступных игр.

Short ответ, это невозможно очень, очень сложно сделать, если у вас нет сервера.

Longer ответ, вам понадобится сервер, и если у вас есть сервер, вам понадобится создать дополнительную программу для обработки передаваемых ей данных и отправить данные другим пользователям.

Я мог бы объяснить, как настроить дополнительную программу и т. Д. И т. Д., Но, судя по тому, что ваши навыки программирования в сети все еще «распространяют свои крылья», я предлагаю вам отказаться от дополнительных функций, подобных этому, пока вы не иметь больше опыта, тогда, когда вы более уверены, попробуйте сами, и если вы все еще боретесь, просто задайте вопрос здесь, и я уверен, что кто-то вам поможет.

+0

Итак, могу ли я указать IP-адрес, чтобы пользователь мог присоединиться к игре со своими друзьями? Спасибо за отличный код, кстати .. – ashraj98

+0

Да, (публичный) IP-адрес был бы вашего сервера. Пожалуйста. – Sam

Смежные вопросы