<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40448&amp;view=findpost&amp;p=264845</guid>
        <pubDate>Wed, 17 Dec 2003 04:13:20 +0000</pubDate>
        <title>TcpClient</title>
        <link>https://forum.sources.ru/index.php?showtopic=40448&amp;view=findpost&amp;p=264845</link>
        <description><![CDATA[varvar:  С tspClient не знаю, но так можно:<br><!--c1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b></b> </td></tr><tr><td id='CODE'><!--ec1--><br>type<br>&nbsp; TCMSocketMessage = record<br>&nbsp; &nbsp; Msg&#58; Cardinal;<br>&nbsp; &nbsp; Socket&#58; TSocket;<br>&nbsp; &nbsp; SelectEvent&#58; Word;<br>&nbsp; &nbsp; SelectError&#58; Word;<br>&nbsp; &nbsp; Result&#58; Longint;<br>&nbsp; end;<br><br>var socks&#58;integer;<br><br>procedure TForm1.Button5Click&#40;Sender&#58; TObject&#41;;<br>var tmp&#58;integer;<br>begin<br>tmp&#58;=strtoint&#40;edit1.text&#41;;<br>if tmp&#62;255 then begin messagedlg&#40;&#39;Invalid IP&#33;&#39;,mterror,&#91;mbok&#93;,0&#41;; exit; end;<br>&nbsp; ipa&#91;1&#93;&#58;=tmp;<br>&nbsp; tmp&#58;=strtoint&#40;edit3.text&#41;;<br>if tmp&#62;255 then begin messagedlg&#40;&#39;Invalid IP&#33;&#39;,mterror,&#91;mbok&#93;,0&#41;; exit; end;<br>&nbsp; ipa&#91;2&#93;&#58;=tmp;<br>&nbsp; tmp&#58;=strtoint&#40;edit4.text&#41;;<br>if tmp&#62;255 then begin messagedlg&#40;&#39;Invalid IP&#33;&#39;,mterror,&#91;mbok&#93;,0&#41;; exit; end;<br>&nbsp; ipa&#91;3&#93;&#58;=tmp;<br>&nbsp; tmp&#58;=strtoint&#40;edit5.text&#41;;<br>if tmp&#62;255 then begin messagedlg&#40;&#39;Invalid IP&#33;&#39;,mterror,&#91;mbok&#93;,0&#41;; exit; end;<br>&nbsp; ipa&#91;4&#93;&#58;=tmp; st&#58;=tmp;<br>&nbsp; tmp&#58;=strtoint&#40;edit6.text&#41;;<br>if &#40;tmp&#62;255&#41;or&#40;tmp&#60;1&#41; then begin messagedlg&#40;&#39;Invalid IP&#33;&#39;,mterror,&#91;mbok&#93;,0&#41;; exit; end;<br>&nbsp; en&#58;=tmp;<br>&nbsp; port&#58;=StrToINT&#40;Edit7.Text&#41;;<br>&nbsp; ipi&#58;=st;<br>&nbsp; progressbar1.min&#58;=st;<br>&nbsp; progressbar1.max&#58;=en;<br>&nbsp; progressbar1.position&#58;=st;<br>&nbsp; ipscanactive&#58;=true;<br>&nbsp; timer1.enabled&#58;=true;<br>end;<br><br>procedure TForm1.Timer1Timer&#40;Sender&#58; TObject&#41;;<br>var skt&#58;tsocket;<br>&nbsp; &nbsp; sa&#58;SockAddr_in;<br>// &nbsp; &nbsp;addr&#58;in_addr;<br>&nbsp; &nbsp; a&#58;integer;<br>&nbsp; &nbsp; estr&#58;string;<br>label showerror,cont;<br>begin<br><br>if ipscanactive=false then begin<br>// &nbsp; &nbsp;if socks=0 then begin<br>// &nbsp; &nbsp; &nbsp;wsacleanup;<br>// &nbsp; &nbsp; &nbsp;timer1.enabled&#58;=false;<br>// &nbsp; &nbsp;end;<br>&nbsp; &nbsp; exit;<br>&nbsp; end;<br>&nbsp; if socks&#62;=255 then exit;<br><br>&nbsp; skt&#58;=socket&#40;PF_INET,SOCK_STREAM,IPPROTO_IP&#41;;<br>&nbsp; sa.sin_port&#58;=htons&#40;port&#41;;<br>&nbsp; ipa&#91;4&#93;&#58;=ipi;<br>&nbsp; sa.sin_addr.S_addr&#58;=ip;<br>&nbsp; sa.sin_family&#58;=PF_INET;<br>&nbsp; socks&#58;=socks+1;<br>&nbsp; wsaasyncselect&#40;skt,form1.handle,WM_USER+1,FD_CONNECT or FD_READ&#41;;<br><br>&nbsp; a&#58;=connect&#40;skt,sa,sizeof&#40;sa&#41;&#41;;<br>&nbsp; if a=-1 then begin<br>&nbsp; &nbsp; a&#58;=wsagetlasterror; estr&#58;=&#39;&#39;;<br>&nbsp; &nbsp; case a of<br>&nbsp; &nbsp; &nbsp; WSAENETDOWN&#58; begin estr&#58;=&#39;Network subsystem is down&#39;; goto showerror; end;<br>&nbsp; &nbsp; &nbsp; WSAEADDRNOTAVAIL&#58; begin estr&#58;=&#39;IP is not available&#39;; goto showerror; end;<br>&nbsp; &nbsp; &nbsp; WSAEAFNOSUPPORT&#58; begin estr&#58;=&#39;IP is not supported&#39;; goto showerror; end;<br>&nbsp; &nbsp; &nbsp; WSAEFAULT&#58; goto showerror;<br>&nbsp; &nbsp; &nbsp; WSAENETUNREACH&#58; begin estr&#58;=&#39;Network cannot be reached&#39;; goto showerror; end;<br>&nbsp; &nbsp; &nbsp; WSAEHOSTUNREACH&#58; begin estr&#58;=&#39;Host cannot be reached&#39;; goto showerror; end;<br>// should be else - WSAENOBUFS&#58; goto showerror;<br>&nbsp; &nbsp; &nbsp; WSAEWOULDBLOCK&#58; goto cont;<br>&nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; socks&#58;=socks-1;<br>&nbsp; &nbsp; &nbsp; closesocket&#40;skt&#41;;<br>&nbsp; &nbsp; &nbsp; exit;<br>&nbsp; &nbsp; end;<br>showerror&#58;<br>&nbsp; &nbsp; socks&#58;=socks-1;<br>&nbsp; &nbsp; closesocket&#40;skt&#41;;<br>&nbsp; &nbsp; stopscan;<br>&nbsp; &nbsp; messagedlg&#40;&#39;Connect error &#39;+inttostr&#40;a&#41;+#10+estr+#10&#39;Scan ended at &#39;+iptostr&#40;ip&#41;,mterror,&#91;mbok&#93;,0&#41;;<br>&nbsp; &nbsp; exit;<br>&nbsp; end;<br>cont&#58;<br>&nbsp; ipi&#58;=ipi+1;<br>&nbsp; if ipi&#62;=en then begin stopscan; exit; end;<br>&nbsp; progressbar1.Position&#58;=ipi;<br>&nbsp; //label9.caption&#58;=inttostr&#40;ipi&#41;;<br>end;<br><br>function Tform1.iptostr&#40;p&#58;cardinal&#41;&#58;string;<br>var pa&#58;array&#91;1..4&#93; of byte absolute p;<br>begin<br>&nbsp; result&#58;=inttostr&#40;pa&#91;1&#93;&#41;+&#39;.&#39;+inttostr&#40;pa&#91;2&#93;&#41;+&#39;.&#39;+inttostr&#40;pa&#91;3&#93;&#41;+&#39;.&#39;+inttostr&#40;pa&#91;4&#93;&#41;;<br>end;<br><br>procedure tform1.stopscan;<br>begin<br>&nbsp; timer1.enabled&#58;=false;<br>&nbsp; ipscanactive&#58;=false;<br>&nbsp; progressbar1.Position&#58;=0;<br>&nbsp;// button5.enabled&#58;=true;<br>&nbsp;// button6.caption&#58;=&#39;Exit&#39;;<br>// progressbar1.Max&#58;=255;<br>&nbsp;// progressbar1.Position&#58;=progressbar1.Max;<br>&nbsp;// label9.caption&#58;=&#39;0&#39;;<br>end;<br><br>procedure Tform1.winsockevent&#40;var msg&#58;tcmsocketmessage&#41;;<br>var sa&#58;sockaddr_in;<br>&nbsp; &nbsp; namelen&#58;integer;<br>&nbsp; &nbsp; tmp&#58;string&#91;20&#93;;<br>&nbsp; &nbsp; host&#58;PhostEnt;<br>begin<br>&nbsp; if msg.SelectError=0 then begin<br>&nbsp; &nbsp; &nbsp; &nbsp; if msg.SelectEvent=FD_CONNECT then begin<br>&nbsp; &nbsp; &nbsp; &nbsp; namelen&#58;=sizeof&#40;sa&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp; getpeername&#40;msg.Socket,sa,namelen&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp; if &#40;ipa&#91;1&#93;=127&#41;and&#40;ipa&#91;2&#93;=0&#41; then lbnames.Items.add&#40;&#39;localhost&#58; Connected&#39;&#41;<br>&nbsp; &nbsp; &nbsp; &nbsp; else begin lbnames.Items.add&#40;iptostr&#40;sa.sin_addr.S_addr&#41;{+Inttostr&#40;sa.sin_addr.S_un_w.s_w1&#41;}&#41;;<br>&nbsp; &nbsp; &nbsp; &nbsp; //gethostbyaddr&#40;sa.sin_addr.s_addr,sa.sin_addr.S_un_w,<br>&nbsp; &nbsp; &nbsp; &nbsp; end;<br>&nbsp; &nbsp; &nbsp;// end;<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>&nbsp; closesocket&#40;msg.socket&#41;;<br>&nbsp; socks&#58;=socks-1;<br>end;<br><!--c2--></td></tr></table><div class='postcolor'><!--ec2--><br><br>взято здесь же на sources.ru(правда давно ссылочки не нашёл), поэтому выдирал из своей проги, мог какие-то переменные не дописать, разбирайся...<br> ]]></description>
        <author>varvar</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40448&amp;view=findpost&amp;p=264682</guid>
        <pubDate>Tue, 16 Dec 2003 19:19:04 +0000</pubDate>
        <title>TcpClient</title>
        <link>https://forum.sources.ru/index.php?showtopic=40448&amp;view=findpost&amp;p=264682</link>
        <description><![CDATA[SergeS:  В настройках компонента должно быть ]]></description>
        <author>SergeS</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=40448&amp;view=findpost&amp;p=262230</guid>
        <pubDate>Fri, 12 Dec 2003 14:55:17 +0000</pubDate>
        <title>TcpClient</title>
        <link>https://forum.sources.ru/index.php?showtopic=40448&amp;view=findpost&amp;p=262230</link>
        <description><![CDATA[Twilling:  Вообщем вот что мне надо.<br>Пишу я такую функцию: определение Ip компов в сети у которых открыт определённый порт. Пишу юзая компонент tcpClient. Как мне реализовать через этот компонент timeout сервера. Или допустим если компа с каким-то Ip вообще в сети нет, он долго тупит, пытая с кему подцепиться. Как мне всё это реализовать, чтобы функция быстрее работала? Заранее спасибо&#33; ]]></description>
        <author>Twilling</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	