если вы видите этот текст, отключите в настройках форума использование JavaScript
Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания .
Новичкам также крайне полезно ознакомиться с данным документом .
Правильно ли я понял идею асинхронных сокетов? 17.12.01 01:09 Число просмотров: 1342
Автор: kabanchik Статус: Незарегистрированный пользователь
izvini, eto ya nechajanno otmoderil :-)))
vse pravil'no ponyal, no eto winsock 1.1
nemnogo ustarevshaya texnologia, xotya rabotaet.
chtoby xorosho vse ponyat', poprobuj poigrat' s WSA* funkciami. u nix vozmozhnostej pobol'she.
udachi.
<programming >
Правильно ли я понял идею асинхронных сокетов? 14.12.01 17:46 Штраф: 10
Автор: gtdfgd Статус: Незарегистрированный пользователь
Правильно ли я понял идею асинхронных сокетов?
По идее я что то упустил если не сложно подскажите
//////////////////////////////////////////////////////////////////
#include <windows.h>
#include <winsock.h>
#define WM_SELECT WM_USER+1
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
SOCKET sock;
SOCKET newsock[1000];
WSADATA ws;
DWORD currentsock;
WORD WSAEvent;
sockaddr_in addr;
MSG msg;
if(WSAStartup(0x101,&ws))
{MessageBox(NULL,"WSAStartup Error",NULL,NULL);return 0;}
sock=socket(AF_INET,SOCK_STREAM,0);
addr.sin_addr.s_addr=INADDR_ANY;
addr.sin_family=AF_INET;
addr.sin_port=htons(8888);
if(bind(sock,(sockaddr*)&addr,sizeof(addr)))
{MessageBox(NULL,"this port is used",NULL,NULL);return 0;}
if(listen(sock,5))
{MessageBox(NULL,"listen Error",NULL,NULL);return 0;}
WSAAsyncSelect(sock,(HWND__ *)hInstance,WM_SELECT,FD_ACCEPT|FD_READ|FD_CLOSE);
while(GetMessage(&msg,NULL,NULL,NULL))
{
switch (msg.message)
{
case WM_SELECT:
MessageBox(NULL,"WM_SELECT",NULL,NULL);
currentsock=msg.wParam;
WSAEvent=WSAGETSELECTEVENT(msg.lParam);
switch(WSAEvent)
{
case FD_CLOSE:
MessageBox(NULL,"FD_CLOSE",NULL,NULL);
shutdown(newsock[currentsock],1);
closesocket(newsock[currentsock]);
break;
case FD_READ:
MessageBox(NULL,"FD_READ",NULL,NULL);
break;
case FD_ACCEPT:
MessageBox(NULL,"FD_ACCEPT",NULL,NULL);
newsock[currentsock]=accept(sock,NULL,NULL);
break;
}
break;
}
}
WSACleanup();
return 0;
}
Правильно ли я понял идею асинхронных сокетов? 17.12.01 01:09
Автор: kabanchik Статус: Незарегистрированный пользователь
izvini, eto ya nechajanno otmoderil :-)))
vse pravil'no ponyal, no eto winsock 1.1
nemnogo ustarevshaya texnologia, xotya rabotaet.
chtoby xorosho vse ponyat', poprobuj poigrat' s WSA* funkciami. u nix vozmozhnostej pobol'she.
udachi.