TCP protokol a příjem dat – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

TCP protokol a příjem dat – .NET – Fórum – Programujte.comTCP protokol a příjem dat – .NET – Fórum – Programujte.com

 

durmitor
~ Redaktor
0
Věrný člen
3. 3. 2009   #1
-
0
-

Zdravím,
v jedné aplikaci bych chtěl komunikovat s měřícím přístrojem prostřednictvím ethernetu. Otevřel jsem si proto TCP spojení a odeslal data. Hledal jsem na internetu jakým způsobem data najakým solidním způsobem přijímat, našel jsem dost příkladů ale není mi to moc jasné. Nechtěl bych na data nikde čekat, prostě až by přišla tak bych je rád zpracoval. Uměl by někdo poradit prosím?

Díky
Ondra

Nahlásit jako SPAM
IP: 77.236.208.–
Nejhorší není nemít práci. Nejhorší je nechtít práci...
dannyk0
Věrný člen
4. 3. 2009   #2
-
0
-

Tomu se rika asynchroni komunikace.Zkus si najit neco na netu.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
durmitor
~ Redaktor
0
Věrný člen
4. 3. 2009   #3
-
0
-

To dannyk :

Díky, ten termín znám a hledal jsem. Už mi to i nějak chodí, šlo mi spíš o praktickou realizaci od lidí co to už dělali.

       // !!! provizorní obsluha - odešle něco po TCP

private void button4_Click(object sender, EventArgs e)
{
string szIPSelected = "192.168.1.250";
try
{
m_socClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string szPort = "5555";
int alPort = System.Convert.ToInt16(szPort, 10);
IPAddress remoteIPAddress = IPAddress.Parse(szIPSelected);
IPEndPoint remoteEndPoint = new IPEndPoint(remoteIPAddress, alPort);
m_socClient.Connect(remoteEndPoint);
Thread.Sleep(200);
t = new Thread(new ThreadStart(StartRecieve));
t.IsBackground = true;
t.Start();

string szData = "SENSe:DATA?\n";
byte[] byData = System.Text.Encoding.ASCII.GetBytes(szData);
m_socClient.Send(byData);

}
catch (Exception err)
{
MessageBox.Show("Chyba", "Chyba při zahájení spojení s: " + szIPSelected + " \n" + err.Message);
}
}


       // funkce, která zajistí asynchronní příjem dat ze socketu

private void StartRecieve()
{
MethodInvoker miv = new MethodInvoker(this.UpdateRTB);
while (true)
{
Byte[] receive = new Byte[100] ;
try
{
// vyprázdní řetězec do kterého se dekódují přijatá data
tmp=null;
// pokusí se ze streamu přečíst data a do ret vrátí jejich počet
int ret = m_socClient.Receive(receive, receive.Length, 0);
if (ret>0)
{ // pokud je počet nenulový, zkusí je převést na řetězec
tmp = System.Text.Encoding.ASCII.GetString(receive);
if(tmp.Length > 0)
{ // pokud je převedený řetězec nenulové délky, vypíše data
this.BeginInvoke(miv);
// počká 200 ms (do té doby tolik dat nepříjde)
Thread.Sleep(200);
}
}
}
catch
{
if (!m_socClient.Connected)
{
break;
}
}
}
t.Abort();
}

Nahlásit jako SPAM
IP: 78.128.153.–
Nejhorší není nemít práci. Nejhorší je nechtít práci...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 19 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý