Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Правильная многопоточнось в сетевом приложении


Автор: eXa 26.2.2008, 19:51
Как? Укажите недочёты. Вроде как работает, но очень много сомнений. Волнует такие вапросы как например создать массив хэндлов HANDLE hThread; и сокетов SOCKET s; или это всё лишнее. Помогитепожалуст разобраться в сабже 

Код

WSADATA lpWSAData;
SOCKET s;
struct sockaddr_in ssin;
char buf[1024];

DWORD id;
HANDLE hThread;

{
    WSAStartup(MAKEWORD(2,2),&lpWSAData);
    for(int i = 0; i < 5; i++) TestFunc();
    WaitForSingleObject(hThread, INFINITE);   
}

void TestFunc(char* lParam)
{
  hThread = CreateThread(0, 0, &ThreadProc, lParam, 0, &id);
}

DWORD WINAPI ThreadProc(LPVOID uin)
{
 s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 memset((char*)&ssin, 0, sizeof(ssin));
 ssin.sin_family = AF_INET; 
 ssin.sin_addr.s_addr = inet_addr("194.67.23.111");
 ssin.sin_port = htons(25);
 connect(s, (sockaddr *)&ssin, sizeof(ssin));
 recvCount= recv(s, buf, 1024, 0);
 printf("%s", uin);
}


Автор: jonie 28.2.2008, 01:24
Цитата

Волнует такие вапросы как например создать массив хэндлов HANDLE hThread

HANDLE hThread[10] ?

чтото интересный код.. ничего не чистится.. и нету даже return у процедуры ThreadProc ....
посмотрите простейшие примеры многопоточных серверов - там строк 25-40, куда как понятнее будет.

Автор: eXa 28.2.2008, 20:22
Код

HANDLE hThread[10] ?

да, но я имел ввиду, нужно ли это вообще, как и с сокетами, я думал как бы сетевая многопотчность отличается некоторами ньюансами от обычного построения многопоточности, может статью какую нибудь... в сети я ничего не нашёл=\ А что не чистится, да просто несчёл это важным в примере, хотя бывает и так забываю о таких моментах =\

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)