<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=48&amp;t=3565&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-07-18T10:31:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=48&amp;t=3565&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-18T10:31:11+01:00</updated>
<published>2013-07-18T10:31:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42279#p42279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42279#p42279"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42279#p42279"><![CDATA[
Może tu warto zajrzeć?<br /><br /><!-- m --><a class="postlink" href="http://delphi.about.com/od/internetintranet/l/aa020403a.htm" >http://delphi.about.com/od/internetintr ... 20403a.htm</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 18 lip 2013, o 10:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-07-18T09:55:26+01:00</updated>
<published>2013-07-18T09:55:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42271#p42271</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42271#p42271"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42271#p42271"><![CDATA[
Hmmm.. A ma ktoś może jakiegoś śledzia?<br /><br />Mam tu na myśli coś co w sumie nadawałoby się do działu rybnego <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jakiś program nawet w delphi, który radzi sobie z pakietami TCP?<br /><br /><br /><!-- m --><a class="postlink" href="http://4programmers.net/Delphi/INDY" >http://4programmers.net/Delphi/INDY</a><!-- m --> - tutaj jest przykład, ale jakoś to dziwnie rozwiązali, bo pakiet jest odbierany dopiero po rozłączeniu klienta, czyli żeby wysyłać strumień, musiałbym co chwilę go łączyć/rozłączać :/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 18 lip 2013, o 09:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-17T23:55:04+01:00</updated>
<published>2013-07-17T23:55:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42251#p42251</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42251#p42251"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42251#p42251"><![CDATA[
<div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />a czy przypadkiem w TCP nie jest tak, że Klient nawiązuje połączenie z serwerem, a po nawiązaniu komunikacja już jest w obie strony?<br /></div><br /><br />Oczywiście, że tak jest i jeśli KONIECZNIE zależy na takiej funkcjonalności to jasna sprawa że trza iść w TCP<br /><br /><div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />Oczywiście cały czas mówię o transmisji przez internet, bo przez LAN to żaden problem używać UDP<br /></div><br /><br />to dobrze rozumiem, jak mówiłem chciałem tylko zwrócić uwagę, że w UDP także można mieć informację zwrotną, a jak dobrze pomyśleć nad protokołem własnej komunikacji to nie stanowi to większego problemu. <br /><br />Jeśli jednak nie chce się iść tą drogą to jak mówiłem zostaje TCP<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lip 2013, o 23:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-07-17T22:23:30+01:00</updated>
<published>2013-07-17T22:23:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42244#p42244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42244#p42244"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42244#p42244"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Tak, ale TYLKO jako odpowiedź na ten datagram który nadleciał (REPLY), a nie że ty sobie wymyślisz aby stworzyć nowy datagram, opatrzyć go TYLKO docelowym adresem IP - bo tak nie da rady (przynajmniej wprost) ...<br /></div><br /><br />No właśnie, a czy przypadkiem w TCP nie jest tak, że Klient nawiązuje połączenie z serwerem, a po nawiązaniu komunikacja już jest w obie strony?<br /><br />W ten sposób jaki przedstawiasz, musiałbym cały czas wysyłać zapytania o dane do serwera, a to mnie nie satysfakcjonuje, gdyż nie byłoby płynności wtedy. Pewnie własnie o tym wspomniałeś tu: <div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />bo nie wprost to też dałoby radę ale zostawmy to.<br /></div><br /><br /><br /><br />Z tymi portami to jest taki problem, że iPlus blokuje WSZYSTKIE porty przychodzące, nie działa nawet port 80. Dlatego jestem zmuszony nawiązywać połączenie z urządzenia mobilnego, a nie stacjonarnego.<br /><br />-- 8 minutach --<br /><br />Oczywiście cały czas mówię o transmisji przez internet, bo przez LAN to żaden problem używać UDP <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 17 lip 2013, o 22:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[PROTON]]></name></author>
<updated>2013-07-17T21:49:09+01:00</updated>
<published>2013-07-17T21:49:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42240#p42240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42240#p42240"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42240#p42240"><![CDATA[
Może się to przyda. Napisałem kiedyś serwer TCP który służy do wyrzucania na konsole to co dostanie po sieci, używam go do wyświetlania logów z wielu maszyn w jednym miejscu. Do wysyłania po sieci można użyć netcata albo rsysloga.<br />Program został stworzony na podstawie poradnika <em><strong>&quot;Beej's Guide to Network Programming&quot;</strong></em><br /><!-- m --><a class="postlink" href="http://beej.us/guide/bgnet/" >http://beej.us/guide/bgnet/</a><!-- m --><br /><br />main.cpp<br />[syntax=cpp]//main.cpp<br />#include &quot;server.h&quot;<br />#include &lt;iostream&gt;<br /><br />#define MYPORT 9090<br /><br />int main(){<br /><br />int  rec,pid;<br />CServer s( MYPORT );<br />while(1){<br />pid = s.connect();<br />//std::cout &lt;&lt; &quot;pid: &quot;&lt;&lt;pid&lt;&lt;&quot;\n&quot;;<br />if(!pid)break;<br />}<br /><br />//std::cout &lt;&lt; &quot;connected\n&quot;;<br />while(1){<br />rec = s.reciv();<br />if(rec&gt;0){<br />std::cout &lt;&lt; &quot;rec: &quot;&lt;&lt;rec&lt;&lt;&quot;\n&quot;;<br />std::cout &lt;&lt; s.buffer;<br />}else if(rec==-1){<br />break;<br />}<br />}<br />//std::cout &lt;&lt; &quot;exit!!!\n&quot;;<br />}[/syntax]<br /><br />server.h<br />[syntax=cpp]//server.h<br />#include &lt;netinet/in.h&gt;<br />#include &lt;signal.h&gt;<br /><br />class CServer{<br />private:<br />int sockfd, new_sockfd, myport, backlog, yes, error, buffer_size;<br />unsigned int sin_size;<br />struct sockaddr_in my_addr;<br />struct sockaddr_in their_addr;<br />struct sigaction sa;<br />public:<br />CServer( int port );<br />~CServer();<br />char * buffer;<br />int connect();<br />void set_buffer_size( int size );<br />int reciv();<br />};[/syntax]<br /><br />server.cpp<br />[syntax=cpp]//server.cpp<br />#include &lt;unistd.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;sys/types.h&gt;<br />#include &lt;sys/socket.h&gt;<br />#include &lt;arpa/inet.h&gt;<br />#include &lt;sys/wait.h&gt;<br /><br />#include &quot;server.h&quot;<br /><br />#define BACKLOG 5<br /><br />void sigchild_handler( int s ){<br />while( wait(NULL)&gt; 0);<br />}<br /><br />void CServer::set_buffer_size( int size ){<br />buffer_size = size;<br />}<br /><br />CServer::~CServer(){<br />if(!buffer) delete&#91;&#93; buffer;<br />}<br /><br />CServer::CServer( int port ){<br />yes = 1;<br />myport = port;<br />error = 0;<br />backlog = BACKLOG;<br />buffer_size = 2048;<br />buffer = NULL;<br /><br />if(( sockfd = socket( AF_INET, SOCK_STREAM, 0)) == -1){<br />error = 1;<br />}<br />if(!error) if( setsockopt( sockfd, SOL_SOCKET, SO_REUSEADDR, &amp; yes, sizeof( int )) == -1){<br />error = 2;<br />}<br />if(!error) {<br />my_addr.sin_family = AF_INET;<br />my_addr.sin_port = htons( myport);<br />my_addr.sin_addr.s_addr = INADDR_ANY;<br />memset( &amp;(my_addr.sin_zero), '\0', 8);<br />if(bind( sockfd, ( struct sockaddr *) &amp; my_addr, sizeof ( struct sockaddr )) == -1){<br />error = 3;<br />}<br />}<br /><br />if(!error) if(listen(sockfd, backlog) == -1){<br />error = 4;<br />}<br /><br />if(!error) {<br />sa.sa_handler = sigchild_handler;<br />sigemptyset( &amp; sa.sa_mask );<br />sa.sa_flags = SA_RESTART;<br />if(sigaction( SIGCHLD, &amp; sa, NULL) == -1){<br />error = 5;<br />}<br />}<br />}<br /><br />int CServer::connect(){<br />if(!buffer){<br />buffer = new char&#91;buffer_size&#93;;<br />}<br />sin_size = sizeof(struct sockaddr_in);<br />if((new_sockfd = accept(sockfd, (struct sockaddr *) &amp;their_addr, &amp;sin_size)) == -1){<br />error = 1;<br />}<br />int pid = fork();<br /><br />if( !pid ){<br />close(sockfd);<br />}else{<br />close(new_sockfd);<br />}<br /><br />return pid; // jeśli zero - rodzic<br />}<br /><br />int CServer::reciv(){<br />int rec;<br />if((rec = recv(new_sockfd, buffer, buffer_size - 1, 0)) == 0) {<br />buffer&#91;0&#93; = '\0';<br />close(new_sockfd);<br />return -1;<br />}<br />buffer&#91;rec+1&#93; = '\0';<br />if(rec==0)sleep(1);<br />return rec;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1315">PROTON</a> — 17 lip 2013, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-17T21:14:51+01:00</updated>
<published>2013-07-17T21:14:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42228#p42228</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42228#p42228"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42228#p42228"><![CDATA[
<div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />No dobra, czyli jak mam odblokowany dajmy na to u uslugodawcy przychodzacy port tylko 21 i 80 to jestem w stanie po wyslaniu pakietu UDP z tego kompitera uzyskac odpowiedz z serwera UDP tak jak w przypadku TCP?<br /></div><br /><br />A co to za różnica jaki port ? Już w Bluebooku <br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/mikrokontrolery-avr-jezyk-c.html" >http://atnel.pl/mikrokontrolery-avr-jezyk-c.html</a><!-- m --><br /><br />masz przykłady jak to uzyskać z pełnym powodzeniem od strony nawet mikrokontrolera więc chyba nie myślisz że ze strony PC'ta miałoby to stanowić jakiś problem<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Chodzi o to, ze z komorki jak przez internet wyslalem pakiet do komputera i doszedl, to jestem w stanie tez w druga strone?<br /></div><br /><br />Tak, ale TYLKO jako odpowiedź na ten datagram który nadleciał (REPLY), a nie że ty sobie wymyślisz aby stworzyć nowy datagram, opatrzyć go TYLKO docelowym adresem IP - bo tak nie da rady (przynajmniej wprost) ... bo nie wprost to też dałoby radę ale zostawmy to.<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Jeszcze jedno. Ile on bedzie czekal na taka odpowiedz?<br /></div><br /><br />Tyle samo co gdybyś to robił przez TCP <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lip 2013, o 21:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-07-17T19:44:10+01:00</updated>
<published>2013-07-17T19:44:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42207#p42207</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42207#p42207"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42207#p42207"><![CDATA[
No dobra, czyli jak mam odblokowany dajmy na to u uslugodawcy przychodzacy port tylko 21 i 80 to jestem w stanie po wyslaniu pakietu UDP z tego kompitera uzyskac odpowiedz z serwera UDP tak jak w przypadku TCP?<br /><br />Chodzi o to, ze z komorki jak przez internet wyslalem pakiet do komputera i doszedl, to jestem w stanie tez w druga strone?<br /><br />Jeszcze jedno. Ile on bedzie czekal na taka odpowiedz? Bo to wlasnie ta komorka docelowo ma odbierac dane <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Wysłane z mojego GT-I9500 za pomocą Tapatalk 4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 17 lip 2013, o 19:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-17T17:51:41+01:00</updated>
<published>2013-07-17T17:51:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42193#p42193</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42193#p42193"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42193#p42193"><![CDATA[
<div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />Poza tym, czy aby nie jest możliwe, że jakiś pakiet może gdzieś zaginąć przy UDP? wiem, że o ile w LAN to raczej nie ma gdzie zginąć,<br /></div><br /><br />takie rzeczy to były w OWYM czasie, gdy wprowadzano pierwsze sieci komputerowe, oparte jeszcze na kablach BNC <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... dawno i nieprawda<br /><br />no ! ... może nie do końca nieprawda ponieważ oczywiście sam standard tej warstwy stosu nie zapewnia potwierdzeń to jednak w dzisiejszych sieciach w tym także w internecie - trzeba by się bardzo postarać żeby gubić pakiety <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />Myślałem, że to jest taka specyfika TCP<br /></div><br /><br />no to właśnie źle myślałeś bo na pakiet UDP można odpowiedzieć zwrotnie i dotrze ta odpowiedź dokładnie do nadawcy jak w TCP<br /><br />Tylko że ....<br /><br />trzeba wiedzieć o jednym - oczywiście że tzw Broadcasty - nie przedostaną się przez routery bo wszystkie wcześniej czy później po kilku tzw &quot;chop'ach&quot; zostaną wybite w pień <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />ale brodacastami to się można bawić w LAN'ie<br /><br />jeśli zaś chcesz w całej sieci w tym w internecie to WYSTARCZY zaadresować datagram i JUŻ <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to wsio ...<br /><br />a po drugiej stronie użyć opcji REPLY, co spowoduje że z datagramu zostanie wykorzystana cała informacja zwrotna o nadawcy, jego IP i port ale co ważne MACADDRESS ... i informacja zwrotna potulnie dofrunie do nadawcy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lip 2013, o 17:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-07-17T16:16:23+01:00</updated>
<published>2013-07-17T16:16:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42188#p42188</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42188#p42188"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42188#p42188"><![CDATA[
Jak to zrobić z UDP? tylko dlatego przesiadłem się na TCP żeby był ruch w 2 strony. Mam w domu stałe zewnętrzne IP i mogę z domem nawiązać połączenie.<br /><br />Myślałem, że to jest taka specyfika TCP/UDP <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Poza tym, czy aby nie jest możliwe, że jakiś pakiet może gdzieś zaginąć przy UDP? wiem, że o ile w LAN to raczej nie ma gdzie zginąć, to w internecie jednak. W dodatku ostatecznie chcę sterować z telefonu suwakami na komputerze, a zwrotny ruch potrzebny mi, żeby zaaktualizować kontrolki w telefonie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 17 lip 2013, o 16:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-17T16:03:38+01:00</updated>
<published>2013-07-17T16:03:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42185#p42185</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42185#p42185"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42185#p42185"><![CDATA[
<div class="quotetitle">mikandrzej napisał(a):</div><div class="quotecontent"><br />TCP musi być ze względu właśnie na typ połączeniowy, tylko tak moge uzyskać połaczenie w dwie strony przy poblokowanych portach za NATem<br /></div><br /><br />W dwie strony nie uzyskasz - tzn z domciu nawiążesz połączenie gdzieś ze światem i będziesz miał po prostu ruch zwrotny zapewniony<br /><br />ale po UDP można dokładnie tak samo <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />nie żebym cię na siłę przekonywał do UDP ale podpowiadam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lip 2013, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-07-17T15:17:09+01:00</updated>
<published>2013-07-17T15:17:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42174#p42174</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42174#p42174"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42174#p42174"><![CDATA[
Generalnie to ja sobie przepisuje z delphi do C++.<br /><br />Borland 6 - indy już wcześniej zainstalowałem, teraz właśnie męczę komponent IdTCPServer.<br /><br />UDP już się bawiłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />TCP musi być ze względu właśnie na typ połączeniowy, tylko tak moge uzyskać połaczenie w dwie strony przy poblokowanych portach za NATem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Potestowałem komponent ServerSocket i się okazuje, ze to on czasami bzdury odbiera, w sensie że nie odbiera jako cały pakiet tylko sobie czasami obcina w jednym pakiecie końcówkę, a dodaje ją do nastepnego, więc tu pies pogrzebany <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />-- 37 minutach --<br /><br />Mirku, powiedz mi jak w komponencie INDY odczytywać na bieżąco dane? teraz mam tak, że dopiero jak się klient rozłączy to wskakuje mi cały bufor...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 17 lip 2013, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-07-17T14:58:31+01:00</updated>
<published>2013-07-17T14:58:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42172#p42172</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42172#p42172"/>
<title type="html"><![CDATA[Re: Borland C++ Builder/Delphi + ServerSocket - obróbka dany]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42172#p42172"><![CDATA[
która to wersja ? Buildera ?<br /><br />przede wszystkim poleciłbym ci na początek zabawę ale nie w TCP do takich celów a UDP. Pytam która wersja bo w wielu powinny być dostępne fajne komponenty INDY 9.x<br /><br />komunikacja bezpołączeniowa jest łatwiejsza do realizacji bez udziału wątków, a TCP czyli połączeniowa .... no można pojechać trochę na zdarzeniach ale to docelowo nie będzie działać za dobrze ...<br /><br />Co do kodu nie pomogę bo chociaż Borland mi bliski <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> to jednak ja męczyłem Delphi a tu się jeszcze nie odnajduję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 17 lip 2013, o 14:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-07-17T13:52:07+01:00</updated>
<published>2013-07-17T13:52:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42169#p42169</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42169#p42169"/>
<title type="html"><![CDATA[Borland C++ Builder/Delphi + ServerSocket - obróbka danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3565&amp;p=42169#p42169"><![CDATA[
Witam, chcę sobie napisać prosty soft, który ma obsługiwać dane przychodzące w pakietach TCP.<br /><br />Pierwszy program (serwer TCP) ma komponent <strong>ProgressBar1</strong>, na którym chcę wyświetlać dane, które przychodzą w postaci tekstu <div class="codetitle"><b>Code:</b></div><div class="codecontent">VALUE=xxx;</div>.<br />Drugi program ma być jego klientem. W nim mam suwak, który w zdarzeniu OnSuwakChange ma wysyłać przez TCP pakiety z aktualną wartością suwaka.<br /><br />Generalnie transmisja działa, pasek się porusza, ale problem pojawia się gdy zacznę szybciej poruszać suwakiem, wtedy program dostaje jakby sklejony pakiet, np. <div class="codetitle"><b>Code:</b></div><div class="codecontent">VALUE=34;VALUE=23</div> i wyrzuca wyjatkiem jakbym chciał zamieniać &quot;VALUE=xxx&quot; na tym integer.<br />Aktualna wersja w ogóle pokazuje, że przekroczyłem zakres operatora &quot;[]&quot; i już nei wiem co z tym zrobić.. <br /><br />[syntax=cpp]void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,<br />      TCustomWinSocket *Socket)<br />{<br /><br />String temp = Socket-&gt;ReceiveText();<br />String command, value;<br />int value_i;<br />command = temp;<br />command.SetLength(6);<br />if (command == &quot;VALUE=&quot;)<br />        {<br />         value = temp;<br />         if(value.Length() &gt; 15)<br />                value.SetLength(15);<br />         Button1-&gt;Caption = value.Length();<br />         String end_t = value&#91;value.Length()&#93;;<br />         while (end_t != 0 &amp;&amp; (end_t &lt;= '0' || end_t &gt;= '9'))<br />                {<br />                        value.SetLength(value.Length() - 1);<br />                        end_t = value&#91;value.Length()&#93;;<br />                }<br />         value.Delete(1,6);<br />         if (value.Length()&gt;0)<br />         {<br />         value_i=value.ToInt();<br />         ProgressBar1-&gt;Position = value_i;<br />         }<br />        }<br />}[/syntax]<br /><br />Jak najlepiej coś takiego obsłużyć? Dodam, że program nic konkretnego nie robi, tylko po prostu uczę się korzystać z protokołu TCP <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Jakby ktoś miał zupełnie inną wizję takiego programu to śmiało pisać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 17 lip 2013, o 13:52</p><hr />
]]></content>
</entry>
</feed>