+ Ответить в теме
Показано с 1 по 20 из 34

Тема: Крестики-нолики

Комбинированный просмотр

  1. #1
    Ветеран nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты Аватар для nobody
    Регистрация
    03.06.2005
    Адрес
    Lost in Space...
    Возраст
    41
    Сообщений
    1,126
    Поблагодарил(а)
    19
    Получено благодарностей: 161 (сообщений: 101).

    По умолчанию

    Конечно же первая задача - протокол.
    1. Игры 1х1.
    2. Протокол можно будет адаптировать под любую другую полевую игру 1х1.
    3. Гарантии никакой не надо пока.

    С чего начинать:
    1. Назначить порт Tcp.
    2. Определить структуру пакета хендшейка.
    3. Пакеты протокола пронумеровать и задекларировать. Пример навскидку:
    - пакет х0000 логин, длина пакета 32 байта
    - х0001 пароль, 32 байта
    - х0002 режим, сколько-то байт
    - и т.д.
    4. Сервер должен анализирвать принимаемые пакеты, и есс-но контролировать, выявлять ошибки, эксплоиты в соответствии с правилами игры.

    Это просто мысли, с чего начать....

  2. #2
    Ветеран nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты Аватар для nobody
    Регистрация
    03.06.2005
    Адрес
    Lost in Space...
    Возраст
    41
    Сообщений
    1,126
    Поблагодарил(а)
    19
    Получено благодарностей: 161 (сообщений: 101).

    По умолчанию

    Вот примерчик работы с сокетами, если кому интересно ;)

    client.c
    Код:
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <stdio.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    int main()
    {
       int sockfd;
       int len;
       struct sockaddr_in address;
       int result;
       char ch = 'A';
       sockfd = socket(AF_INET, SOCK_STREAM, 0);
       address.sin_family = AF_INET;
       address.sin_addr.s_addr = inet_addr("127.0.0.1");
       address.sin_port = 9000;
       len = sizeof(address);
       result = connect(sockfd, (struct sockaddr *)&address, len);
       if(result == -1) {
         perror("Error: client");
         exit(1);
       }
       write(sockfd, &ch, 1);
       read(sockfd, &ch, 1);
       printf("Answer from server = %c\n", ch);
       close(sockfd);
       exit(0);
    }
    server.c
    Код:
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <stdio.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    int main()
    {
       int server_sockfd, client_sockfd;
       int server_len, client_len;
       struct sockaddr_in server_address;
       struct sockaddr_in client_address;
       server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
       server_address.sin_family = AF_INET;
       server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
       server_address.sin_port = 9000;
       server_len = sizeof(server_address);
       bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
       listen(server_sockfd, 5);
       while(1) {
          char ch;
          printf("server waiting\n");
          client_len = sizeof(client_address);
          client_sockfd = accept(server_sockfd,
          (struct sockaddr *)&client_address, &client_len);
          read(client_sockfd, &ch, 1);
          ch++;
          write(client_sockfd, &ch, 1);
          close(client_sockfd);
       }
    }

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.