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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос о формате 
:(
    Опции темы
gud
Дата 21.8.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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





послаю  такую строку через сокет 
char St[7]="123455";

принимаю массив 
char * pBufferRecv;

просматриваю:
int int1,int2.....;

int1 = pBufferRecv[0];  int2 = pBufferRecv[1]; int3 = pBufferRecv[2]; 

и получается int1 = -13312, int2 = -13096, int3 = -13305, int4 = -13304, int5 = -13312 ....


мне надо проверить что пришла начальная строка, непойму как это сделать и что эти числа значат,в каком формате?
подскажите пожалйста




PM MAIL   Вверх
bsa
Дата 21.8.2008, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



попробуй сделать так:
Код
unsigned char * pBufferRecv;

PM   Вверх
Ches
Дата 21.8.2008, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Было бы неплохо непосредственно код приема посмотреть
PM MAIL ICQ   Вверх
gud
Дата 21.8.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не помогло, все также

Добавлено через 7 минут и 15 секунд
вот поток на чтение

            HLOCAL hBufferRecv;
    TCHAR * pBufferSend;
    
    __int32 sizeBufferRecv;
    __int32 sizeRecv; 

           SOCKET my_sock;
    my_sock=((SOCKET *) sock_et)[0];

 sizeBufferRecv=7;

 hBufferRecv=LocalAlloc(LHND,sizeBufferRecv+1);
 pBufferRecv=(TCHAR *)LocalLock(hBufferRecv);

 ZeroMemory(pBufferRecv,sizeBufferRecv);

 if((sizeRecv=recv(my_sock,pBufferRecv,65535,0))==SOCKET_ERROR)
          {if (WSAGetLastError()!=WSAEWOULDBLOCK)
              { int g;
                char buf_g[10];
     
         g=WSAGetLastError();
        itoa(g,&buf_g[0],10);
        MessageBox(0,&buf_g[0],"Server_RECV",MB_OK);     
              }
          }
 else
 {MessageBox(0,"OK","Server_RECV",MB_OK);}
    
 int1 = (pBufferRecv[0]);
 int2 = (pBufferRecv[1]);
 int3 = (pBufferRecv[2]);
...
LocalUnlock(hBufferRecv);
LocalFree(hBufferRecv);

_endthreadex(0);
return 0;
 
 
PM MAIL   Вверх
andrew_121
Дата 23.8.2008, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



gud, Ну кто же так код выкладывает! Где начало, где конец? Не ясно!


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
gud
Дата 25.8.2008, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



это была  функция 
unsigned __stdcall ReadThread(void * sock_et)

она вызывается из этой функции
unsigned ReadSocket(SOCKET sock)
{    MySock = sock;
    _beginthreadex(NULL,0,&ReadThread,&MySock,0,&thId1);
    return 0;
}
и перед этим обработка событий:
LRESULT CALLBACK Serv(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
    SOCKET mySocket;          
    switch (uMsg) 
{
    case WM_INITDIALOG:    
        int res;
        char buf[10];

        if (res=ClientInit(hwnd)==-1)
                  {EndDialog(hwnd,0);}
        return TRUE;

    case WM_CLOSE:
        MessageBox(0,"WM_CLOSE","Client",MB_OK);
        ClientStop();EndDialog(hwnd,0);
        return TRUE;

    case WM_VClient:             
        switch (WSAGETSELECTEVENT( lParam ))
        {
        case FD_CONNECT:                
            MessageBox(0,"Cоединение с сервером установлено","Client",MB_OK);    
            Client_First_Connect = true;     
            break;

        case FD_CLOSE:
            MessageBox(0,"Cоединение закрыто","Client",MB_OK);
            shutdown(hSocket,SD_BOTH);
            closesocket(hSocket);WSACleanup();
            return TRUE;        

        case FD_WRITE:
                  MessageBox(0,"Отправлен запрос","Client",MB_OK);              
            break;
        case FD_READ:
            MessageBox(0,"Есть ответ от сервера","Client",MB_OK);
            ReadSocket((SOCKET)wParam);                        
            break;
        }
        return TRUE;
}

    return 0;
}

и в начале  создание сокета сервера
unsigned ServerInit(HWND hWin)
{
    WORD wVersionRequested;
    WSADATA wsaData;    
               int err;
    int g;
    char buf_g[10];

    
    wVersionRequested = MAKEWORD(1,1);
            err = WSAStartup( wVersionRequested, &wsaData );
                if (err != 0 ) {return -1;}
                if (LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 ) 
        { WSACleanup(); return -1;}

                hSocket_Server = socket (AF_INET,SOCK_STREAM,IPPROTO_TCP);
                if (hSocket_Server == -1) 
        {WSACleanup();
         return -1;}

                servaddr.sin_family=AF_INET;
                servaddr.sin_addr.s_addr = INADDR_ANY;
                servaddr.sin_port=htons(1226);


     if (bind(hSocket_Server,(sockaddr*)&servaddr,sizeof(servaddr))==SOCKET_ERROR)     
     {   g=WSAGetLastError();
         itoa(g,buf_g,10);shutdown(hSocket_Server,SD_BOTH);
         closesocket(hSocket_Server);
         WSACleanup();
     }
                
    if (listen(hSocket_Server,SOMAXCONN) == SOCKET_ERROR)
         {g=WSAGetLastError();
          itoa(g,buf_g,10);shutdown(hSocket_Server,SD_BOTH);
          closesocket(hSocket_Server);
          WSACleanup();}
    
    if (WSAAsyncSelect(hSocket_Server,hWin,WM_VServer,FD_ACCEPT|FD_CLOSE|FD_WRITE|FD_READ)==SOCKET_ERROR)
          {g=WSAGetLastError();
           itoa(g,buf_g,10);closesocket(hSocket);
           WSACleanup();
           return -1;}         
          return 0;

диалог:
unsigned __stdcall MainThread_Server(void * Params)
{    MSG msg;
    hDialog=CreateDialog((HINSTANCE)hInstance,MAKEINTRESOURCE(IDD_DIALOG),0,(DLGPROC)Serv);
    ShowWindow(hDialog, SW_HIDE);
}

и все это в потоке:
_beginthreadex(NULL,0,&MainThread_Server,NULL,0,&thId);



чот нет никаких предложений((((((
PM MAIL   Вверх
gud
Дата 25.8.2008, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вообщет разобрался немного

если полученное сложить с числом 13312 то получаются какраз аски коды
например "1" прихоит -13263,если сложить с 13312 то будет 49
и другие символы тож совпадают smile  и первым символом в массиве приходит всегда число -13312

тока что почему откуда мне непанятно
PM MAIL   Вверх
mrbrooks
Дата 25.8.2008, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



gud, возможно есть смысл учесть сетевой порядок байт. 
см. здесь
имхо и исользуй кнопку код - не удобно смотреть че ты наваял.
PM MAIL   Вверх
gud
Дата 25.8.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ок исправлюс, всем спс. пока вопрос закрыт smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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