Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пропажа русских букв в дескрипторе сокетов 
:(
    Опции темы
Quanzi
Дата 26.12.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 22.12.2006

Репутация: нет
Всего: нет



Итак... 
С локалями разобрался, проблема все-таки раньше, в момент получения данных от сокета. Соответственно могу весь файл выложить, но он больно большой... мб вот такой кусок пойдет:

Код


/*<.0.>*/

    /* If there are new connections waiting, accept them. */
    if (FD_ISSET(mother_desc, &input_set))
      new_descriptor(mother_desc);

/*<.1.>*/

    /* Process descriptors with input pending */             /* Мысль есть, что пропадают буквы где-то в этом куске */
    for (d = descriptor_list; d; d = next_d) {
      next_d = d->next;
      if (FD_ISSET(d->descriptor, &input_set))
    if (process_input(d) < 0)
      close_socket(d);
    }

    /* Process commands we just read from process_input */
    for (d = descriptor_list; d; d = next_d) {
      next_d = d->next;
      /*
       * Not combined to retain --(d->wait) behavior. -gg 2/20/98
       * If no wait state, no subtraction.  If there is a wait
       * state then 1 is subtracted. Therefore we don't go less
       * than 0 ever and don't require an 'if' bracket. -gg 2/27/99
       */
      if (d->character) {
        GET_WAIT_STATE(d->character) -= (GET_WAIT_STATE(d->character) > 0);

        if (GET_WAIT_STATE(d->character))
          continue;
      }

      if (!get_from_q(&d->input, comm, &aliased))
        continue;

      if (d->character) {
    /* Reset the idle timer & pull char back from void if necessary */
    d->character->char_specials.timer = 0;
    if (STATE(d) == CON_PLAYING && GET_WAS_IN(d->character) != NOWHERE) {
      if (IN_ROOM(d->character) != NOWHERE)
        char_from_room(d->character);
      char_to_room(d->character, GET_WAS_IN(d->character));
      GET_WAS_IN(d->character) = NOWHERE;
      act("$n has returned.", TRUE, d->character, 0, 0, TO_ROOM);
    }
        GET_WAIT_STATE(d->character) = 1;
      }
      d->has_prompt = FALSE;
      if (d->str)/* Writing boards, mail, etc. */             /* В этот момент в str уже находяться только английские буквы */
    string_add(d, comm);
      else if (d->showstr_count) /* Reading something w/ pager */
    show_string(d, comm);
      else if (STATE(d) != CON_PLAYING) /* In menus, etc. */
    nanny(d, comm);
      else {            /* else: we're playing normally. */
    if (aliased)        /* To prevent recursive aliases. */
      d->has_prompt = TRUE;    /* To get newline before next cmd output. */
    else if (perform_alias(d, comm, sizeof(comm)))    /* Run it through aliasing system */
      get_from_q(&d->input, comm, &aliased);
    command_interpreter(d->character, comm); /* Send it to interpreter */

/*<.2.>*/


числа типа <.0.> - это пропуски кода (например удаления персонажей, потерявших связь и тд)... если нужно что-то оттуда - отписывайте номер, я выложу.
Просто я честно не понимаю, где здесь можно потерять русские буквы. Только если в дескрипторах.
PM MAIL   Вверх
ptr
Дата 28.12.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Ну и посмотри где у тебя русские буквы портятся.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0733 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.