- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
// If iMode!=0, non-blocking mode is enabled.
u_long iMode=1;
ioctlsocket(Socket,FIONBIO,&iMode);
// Main loop
for(;;)
{
// Display message from server
char buffer[1000];
memset(buffer,0,999);
int inDataLength=recv(Socket,buffer,1000,0);
std::cout<<buffer;
int nError=WSAGetLastError();
if(nError!=WSAEWOULDBLOCK&&nError!=0)
{
std::cout<<"Winsock error code: "<<nError<<"\r\n";
std::cout<<"Server disconnected!\r\n";
// Shutdown our socket
shutdown(Socket,SD_SEND);
// Close our socket entirely
closesocket(Socket);
break;
}
Sleep(1000);
}
http://www.win32developer.com/tutorial/winsock/winsock_tutorial_3.shtm
Вот как нада работать с сокетами... (строка 27).
rat4 26.12.2010 21:40 # 0
guest 26.12.2010 21:44 # 0
rat4 26.12.2010 21:53 # +1
guest 26.12.2010 21:55 # 0
absolut 26.12.2010 21:59 # 0
P.S. пока писал коммент - опередили :)
bugmenot 26.12.2010 22:02 # +2
inkanus-gray 26.12.2010 22:26 # 0
А вообще по-хорошему do... while с условием, а аппендикс переместить за цикл и break не нужен.
bugmenot 26.12.2010 22:28 # 0
absolut 26.12.2010 22:37 # 0
guest 26.12.2010 22:51 # +4
Ваш КО.
Разве, что, в одном компиляторе while(1) у меня выдавало предупреждение, поэтому лучше while(true) (оно не выдавало), но это слишком длинно, поэтому лучше for (;;).
bugmenot 26.12.2010 23:20 # −3
guest 26.12.2010 23:22 # +3
while true do
begin
end;
взамен
for(;;){}
?
Да я, написав это, успею после работы в Крайзис поиграть ещё...
bugmenot 26.12.2010 23:31 # 0
guest 26.12.2010 23:32 # 0
bugmenot 26.12.2010 23:49 # 0
особо ленивые могут добавить обвеса до forобразного цикла
inkanus-gray 26.12.2010 23:54 # +1
bugmenot 26.12.2010 23:58 # +1
inkanus-gray 27.12.2010 00:00 # +5
guest 27.12.2010 00:27 # 0
guest 27.12.2010 00:28 # 0
absolut 27.12.2010 00:55 # +1
bugmenot 10.01.2011 19:43 # 0
inkanus-gray 26.12.2010 23:33 # 0
...
until false;
PROFIT
guest 26.12.2010 23:39 # 0
Я могу даже так. Тут больше PROFIT. )
inkanus-gray 26.12.2010 23:41 # −4
absolut 27.12.2010 01:01 # −1
koodeer 27.12.2010 01:48 # +2
TheCalligrapher 26.12.2010 23:50 # +1
а потом
guest 27.12.2010 00:30 # +1
И:
)))
absolut 27.12.2010 00:59 # +2
rat4 27.12.2010 09:41 # +1
bugmenot 27.12.2010 13:27 # 0
Dummy00001 27.12.2010 18:54 # +2
Сочувствую и понимаю вашу боль. У меня в одном модуле нечто подобное написано финнской коллегой. Сначала везде тыркают non-blocking mode - потому что пара крутых консультантов им сказала что это оч круто - а потом пишут нечто подобное потому что на самом деле в коде нужно MSG_WAITALL.
ЗЫ мне тот memset() больше нравится.
guest 02.01.2011 01:36 # −2