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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сокеты и потоки, помогите запихнуть в поток 
V
    Опции темы
Sergio
  Дата 28.1.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Здраствуйте. Делаю серверную часть на TCP. Хочу чтобы кждий клиент прослушивался в отдельном потоке и принятую инфу от него выкидало на экран. Но что он не корректно работает smile  Вот моё творение:
Код

DWORD WINAPI ClientThreadRecive(LPVOID lpParam);                     //Прототип
int _tmain(int argc, _TCHAR* argv[])
{
    
    WSADATA wsa;                                                // Info about winsock2
    int error;
    DWORD  dwThreadId;
    HANDLE hThread;
    
    WSAStartup(MAKEWORD(1,0), &wsa);                            // Loading library winsock2
    SOCKET mySocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);    // Создание сокета  accept
    SOCKET connectedSocket;                                     // Создание сокета  для приёма

     sockaddr_in AdressInfo;
     AdressInfo.sin_family = AF_INET;                           // Internet technology (TCP,UDP etc)
     AdressInfo.sin_port = htons(4888);
     AdressInfo.sin_addr.s_addr=inet_addr("127.0.0.1");
    

cout<<"\t\tThis is a server part. Using TCP technology.\n\n"; 

    error = bind(mySocket, (SOCKADDR*)&AdressInfo, sizeof(AdressInfo));  //Связывание даных с сокетом
     switch(error)
      {
        case 0: cout<<"Bind . . . OK\n"; break;
        default: cout<<"Bind . . . ERROR\n"; break;
      };
                                                                  
    error = listen(mySocket, 3);                                         // Прослушка
     switch(error)
      {
        case 0: cout<<"Listen process . . . OK\n"; break;
        case WSAEINVAL: cout<<"Listen process . . . ERROR(function bind was not called)\n"; break;
        case WSANOTINITIALISED: cout<<"Listen process . . . ERROR(do not load library \"winsock\")\n"; break;
        case WSAEISCONN: cout<<"Listen process . . . ERROR(socet is allready connected)\n"; break;
        default: cout<<"Listen process . . . ERROR(unknown)\n"; break;
      };


     int AdressInfoSize = sizeof(AdressInfo);
     while (1)
      {
     connectedSocket = accept(mySocket, (struct sockaddr *)&AdressInfo,&AdressInfoSize);

                  
     hThread = CreateThread(NULL, 0, ClientThreadRecive, (LPVOID)connectedSocket, 0, &dwThreadId);
        CloseHandle(hThread);
        
        cout<<"\t"<<inet_ntoa(AdressInfo.sin_addr);    
      }
}
DWORD WINAPI ClientThreadRecive(LPVOID lpParam)
 {
    DWORD result = 0;
    SOCKET    RecvSock=(SOCKET)lpParam;
    char RecvPackage[1024];
    char msg[1000];
    char RecvDate[10];
    char RecvTime[5];
    char RecvComputerName[15];
    int ret;
      while(1)
       {
          ret = recv(RecvSock, RecvPackage, sizeof(RecvPackage), 0);
           cout<<RecvPackage;
        
       }
     return result;
 }
 
Проблема в том, что когда хотя бы один клиент выходит из сети то на экраны появляются разные символы smile 
Помогите пожалуйста smile  Буду очень благодарен.


Это сообщение отредактировал(а) Sergio - 28.1.2007, 21:13
PM MAIL ICQ   Вверх
Sergio
Дата 28.1.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



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


 




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


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

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