TCP připojení   zodpovězená otázka

C#, Threading, I/O operace

Dobrý den,

mám vytvořeného TcpClienta

System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient();

pokud dám, aby se takto připojil

client.Connect(IPAdresa, port);

tak aplikace samozřejmě vytuhne, zvlášť pokud zvolená IP adresa není dostupná. Chtěl bych vědět, jak udělat toto připojování v novém vlákně. Četl sem seriál o kreslící tabuli, ale nejsem z toho moudrý, jak to převést do C#.

A druhá otázka: Jaký je rozdíl v připojení pomocí metody Connect a pomocí metody BeginConncet?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je právě ono. Connect příkaz se bude provádět tak dlouho, než se mu podaří připojit nebo vyvolat vyjímku. A BeginConnect začne čekat, ale v jiném vlákně, takže máte hlavní vlákno volné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Děkuji, funguje to skvěle.

Pokud bych chtěl udělat automatické připojování na danou IP adresu. Tedy mám spuštěný Timer, který každých řekněme 5 sekund zkontroluje, zda je aplikace připojena a pokud ne, pokusí se připojit. Tyto nové pokusy by se spouštěly opět v novém vlákně. Mohlo by se stát, že by tato nové vlákna časem zahltila procesor, když by se spojení pořád nedařilo? Nebo je toto nebezpečí nějakým způsobem ošetřeno v systému?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ono se to pokouší připojit celou dobu. Jako arguement pak zadáte funkci, která se při skončení zavolá. A odtud pak můžete začít novou kontrolu v novém vlákně (protože to staré se ukončilo).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback