На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
  
> Как работать с ClientSocket и ServerSocket
    Подскажите пожалуйста?
    Как отправить 1 или 2 переменные от ClientSocket и
    получить их ServerSocket.
    Подскажите хотя бы один пример работы с SendBuf(void *, int count) и
    ReceiveBuf(void *,int count);
      сначала создаешь сервер:
              ServerSocket1->Open();
      потом клиента:
              ClientSocket1->Host = "имя сервера";
              ClientSocket1->Open();
      передача:
              ClientSocket1->Socket->SendText(".....");
              ServerSocket1->Socket->Connections[активное соединение]->SendText("...");
      прием:
      //---------------------------------------------------------------------------
      void __fastcall TForm1::ClientSocket1Read(TObject *Sender,
           TCustomWinSocket *Socket)
      {
           Beep();
           Memo1->Text=Socket->ReceiveText();
      }
      //---------------------------------------------------------------------------
      void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
           TCustomWinSocket *Socket)
      {
           Beep();
           Memo1->Text=Socket->ReceiveText();
      }
      //---------------------------------------------------------------------------


      В принципе работает
        Как работать с SendText() и ReceiveText() это понятно и работает.
        А вот как мне переслать допустим переменную структуры card, что
        ниже от клиента к серверу и обратно после обработки сервером.

        struct card
        {
          int suit;
          int pack;
          int back;
          enum move {player,computer};
        };
          See SendBuf(buf, length buf)
            Все, структура отлично гоняется от клиента к серверу и наоборот.
            А вот подскажите пожалуйста, как из присланного потока
            выделить текстовое сообщение или ту же структуру в буфере.
            Как узнать клиенту или серверу, что к нему именно пришло.
              See ReadBuf(buf, length buf)
              buf - твоя структура.
                Цитата Александр, 31.07.02, 20:21:34

                А вот подскажите пожалуйста, как из присланного потока
                выделить текстовое сообщение или ту же структуру в буфере.
                Как узнать клиенту или серверу, что к нему именно пришло.

                Это ты уже сам должен делать - типа перед текстом или структурой ввести дополнительное поле-идентификатор сообщения. Например, считал в char* buf нечто,
                посмотри buf[0] - если, ех., это 1, то в с buf+1 - текст, а если 2 - то структура. Ну и посылку надо организовать соответственно.


                  Примерно так создается посылка нескольких или разных данных.

                  Создал структуру
                  struct packet
                  {
                  int data_length;//длинна присоединенных данных
                  int packet_type;//тип - ход, замес, сообщение в чате итд
                  }

                  Потом посылаю ее вместе с данными (спереди прикрепляю)
                  packet pc;
                  byte *buffer;
                  //
                  резервирую память и заполняю как надо buffer
                  //и посылаю его
                  Send(buffer,sizeof(pc)+pc.data_length);
                  //освобождаю buffer;
                  Free(buffer);

                  А получаю в 2 приема
                  Receive(&pc,sizeof(pc));
                  switch (pc.packet_type)
                  {
                  case 1:
                  Receive(&var1,pc.data_length);
                  break;
                  case 2:
                  Receive(&var2,pc.data_length);
                  break;
                  ..................
                  }
                  Вот примерно так...



                  http://www.durbeccel.narod.ru/
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0243 ]   [ 16 queries used ]   [ Generated: 2.05.24, 01:52 GMT ]