Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.53.209] |
|
Сообщ.
#1
,
|
|
|
Добрый день.
Я пишу сетевую прогу на C++ bulider 2007.ипользуя winsock. Я выбрал стандартное VCL приложение. Потом на форму сделал кнопку, в её оброботик прописал StartServer(); В гланвный файл формы(где обработчики, про инлудил мною созданый файл "functions.cpp" с этим содержиммым. #include <windows.h> #include <winsock2.h> //--------------------------------------------------------------------------- DWORD WINAPI ListenThread(LPVOID IpParam); DWORD WINAPI ClientThread(LPVOID client); //--------------------------------------------------------------------------- int StartServer() { WSADATA wsadata; WSAStartup(MAKEWORD(2,0),&wsadata); HANDLE Thread; DWORD thID; Thread=CreateThread(NULL,0,ListenThread,0,0,&thID); if(Thread==NULL) MessageBox(NULL,"Thread error","Error",MB_OK); return 0; } //--------------------------------------------------------------------------- DWORD WINAPI ListenThread(LPVOID IpParam) { HANDLE Thread; DWORD thID; SOCKET server,client; struct sockaddr_in serveraddr,clientaddr; int clientsize=sizeof(clientaddr); int err; server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); serveraddr.sin_family=AF_INET; serveraddr.sin_port=htons(81); serveraddr.sin_addr.s_addr=htonl(INADDR_ANY); err=bind(server,(struct sockaddr *)&serveraddr,sizeof(serveraddr)); if(err==-1) MessageBox(NULL,"Bind error","Error",MB_OK); err=listen(server,4); if(err==-1) MessageBox(NULL,"Listen error","Error",MB_OK); if(err==-1) client=accept(server,(struct sockaddr *)&clientaddr,&clientsize); if(client==-1) MessageBox(NULL,"Accept error","Error",MB_OK); else Thread=CreateThread(NULL,0,ClientThread,(LPVOID)client,0,&thID); return 0; } DWORD WINAPI ClientThread(LPVOID client) { MessageBox(NULL,"Обработка клиентa","",MB_OK); } Делоо в том что во вконце функции ListenThread, должен вызваться поток на обслуживание клиент (ClientThread(LPVOID client). после фунции accept(). которая ждёт подключений. дело в том что при надатии на кнопку я сразу получаю сообщение вот это MessageBox(NULL,"Обработка клиентa","",MB_OK); из функции ClientThread(LPVOID client). Но я должен был получить его после того как подключусь к серверу а не срузу после нажати кнопки. помогитье плиз. с меня +++ Добавлено сорри я дурак нашол ошибку лишнее if(err==-1) |