Asynchronni sockety – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Asynchronni sockety – .NET – Fórum – Programujte.comAsynchronni sockety – .NET – Fórum – Programujte.com

 

Mara
~ Anonymní uživatel
31 příspěvků
12. 2. 2010   #1
-
0
-

Dobry den,
Mam problem pri sprave vice klientu na TCP serveru za pouziti asynchronnich socketu.
Spojeni s jednim klientem a prijem dat od nej vypada takto:

private void Pripoj(IAsyncResult result)

{
Socket socketKlienta = listenerSocket.EndAccept(result);

if (socketKlienta.Connected)
{
klient = vytvorKlienta(socketKlienta);
navazanaSpojeni.Add(klient);
aktualizujKlienty();

socketKlienta.BeginReceive(klient.buffer, 0, klient.buffer.Length, SocketFlags.None, new AsyncCallback(PrijemDat),
klient);

listenerSocket.BeginAccept(new AsyncCallback(Pripoj), null);

}
}

private void PrijemDat(IAsyncResult result)
{
Klient aktualniKlient = (Klient) result.AsyncState;
Socket socketKlienta = klient.getSocket();
int recv = socketKlienta.EndReceive(result);
String text = Encoding.ASCII.GetString(klient.buffer);

preposli(text, aktualniKlient.getCislo());
socketKlienta.BeginReceive(klient.buffer, 0, klient.buffer.Length, SocketFlags.None, new AsyncCallback(PrijemDat),
klient);


problem je v tom ze kdyz se pokusim prijmout data od jineho nez posledne prihlaseneho klienta, vyhodi mi program v radku int recv = socketKlienta.EndReceive(result); vyjimku (objekt IAsyncResult nebyl vracen z odpovidajici asynchronni metody pro tuto tridu). Asynchronni metody jsem pochopil tak, ze bezi paralelne, tak nechapu jak se tam muze dostat spatny objekt, ktery je tedy pravdepodobne vzdy vracen z posledni zavolane metody beginRecieve, pri prihlaseni posledniho klienta.
Dekuji za rady a napady, jak tento problem resit.

Nahlásit jako SPAM
IP: 88.100.127.–
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, 49 hostů

Podobná vlákna

Asynchronní komunikace — založil Jan Knížek

Asynchronní metody — založil RePRO

SOCKETY — založil Pepa Rohlik

 

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