Помогите решить проблему! Я пишу бота для irc, но возникла проблема, бот через 3 мин разрывает соединение с сервером! Заранее спасибо!
| Код | program bot;
uses winsock, windows, sysutils, ShellAPI;
const nick ='bot'; chanell='#bot'; // канал fin=#13+#10;
var nick:string;// ник бота S:TSocket; D:WSAData; A:TSockAddr; Buf_r: array[0..1024] of char;//буфер...сюдя записывается все что приходит от сервера
//Посылка текста procedure _sender(str:string); var i:integer; begin for i:=1 to Length(str) do if send(s, str[i] , 1, 0) = SOCKET_ERROR then exit; end;
//Прием текста procedure CheckAnswer; var Hpos: word; Answer:integer; begin Answer:=Recv(S,Buf_r,sizeof(Buf_r),0); if (Answer=SOCKET_ERROR) or (Answer=0) then exit; Hpos:=pos('!HELP',Buf_r);//если есть команда отсылаем текст if Hpos >0 then begin _sender('NOTICE '+chanell+' : бла..бла...бла.бла' +fin); sleep(2000); Buf_r:=''; end; end;
//Процедура соединения с сервером Procedure connected; begin if WSAStartup($101,D)<>0 then exit; A.sin_family:=AF_INET; A.sin_addr.S_addr:=inet_addr(pchar('91.149.157.69')); S:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); if S=INVALID_SOCKET then exit; A.sin_port:=htons(6667); if connect(S,A,sizeof(A))<>0 then exit; end;
//Процедура входа на канал и логирование procedure Loging; begin _sender ('user'+' '+nick+' '+nick+' '+nick+' '+nick+fin);// логирование _sender ('nick'+' '+nick+fin); // логирование _sender ('join '+chanell+fin); // заходим на канал Sleep(1000); end;
////START PROGRAMM begin connected; Loging ; while true do begin CheckAnswer; sleep (1000); end; end.
|
|