2010-01-06 1 views
3

im разработка многопользовательской карточной игры, в которой клиенты должны общаться друг с другом или с общим сервером. я никогда не делал этого раньше, поэтому мне нужно какое-то руководство или учебник о том, как этого добиться.общий учебник по java-серверу/клиенту

до сих пор я создал местный, один человек версия игры ...

ответ

5

ВС имеет хороший tutorial on writing a client/server pair в комплекте с примерами кода.

+1

спасибо! который должен хорошо работать .. – Ali

+0

в качестве продолжения ... если бы я должен был передать объект назад/вперед другим объектам (скажем, передать объекты Карты объекту Dealer), мне пришлось бы использовать сериализацию? – Ali

+2

@Ali: Определенно, хотя, если вы хотите написать свой собственный протокол, вы можете просто отправить некоторые идентификаторы, такие как AS (для Ace of Spades) или 1H (1 из сердец) и пропустить процесс сериализации. – OscarRyz

1

До сих пор я создал местную, один человек версию игры ...

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

Оттуда вы можете исследовать RMI, чтобы вызвать методы удаленно. Это должно быть намного проще, чем создание многопользовательской версии и создание сетей.

Что РМО абстрагироваться от подключения к сети и позволяет упростить выполнение удаленных объектов называют (то есть, это упрощает того, чтобы написать свой собственный протокол с розетками)

+0

whoaaa, ​​я даже не слышал об этом ... это кажется намного проще .. ссылаясь на мой комментарий выше о сериализации, может ли RMI быть более простым способом этого? – Ali

+0

На самом деле они идут вместе. Написав собственный протокол (как подсказывает вышеприведенный ответ), вы можете решить использовать сериализуемые объекты или нет. * Проблема * (или возможность) заключается в том, что вам также нужно будет закодировать инструкции для вызова методов на другой стороне провода и отправить результаты. С RMI (который выступает за вызов удаленного метода) вам не нужно кодировать логику для вызова метода или получения результатов от клиента к серверу, вы просто вызываете их. О сериализации довольно просто в общих чертах (вы просто реализуете интерфейс Serializable) – OscarRyz

0

RMI является более сложным. Перед началом работы с RMI вам необходимо понять некоторые концепции, например, продлить Remote, RemoteExceptions и т. Д. Кроме того, для запуска приложений, работающих на RMI, требуются некоторые шаги, такие как запуск rmiregistry и настройка файла политик.

Если вы новичок, сначала начните с простых сокетов. Их легче понять, но несколько долго, чтобы закодировать. RMI легче кодировать, но несколько сложно понять.

Для сокетов:

TCP Sockets

UDP and Datagrams

Для RMI:

Simple tutorial to RMI - Really helped me start