- HThomas: Az ideális home office monitor nyomában
- sziku69: Szólánc.
- Geri Bátyó: Agglegénykonyha 1 – rizseshús másképp
- Imilenni: Egy kis depi, remélem elfér itt :) 2#
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Fűzzük össze a szavakat :)
- Mister_X: Tényleg le kell nyelnie az embernek az önbecsülését?
- Luck Dragon: Asszociációs játék. :)
- eBay-es kütyük kis pénzért
- Eztis_Aztis: Hogyan tovább....
Új hozzászólás Aktív témák
-
G.A.
aktív tag
Üdv!
Egy TCP alapú adatküldő/fogadó alkalmazást szeretnék készíteni, ehhez írtam egy alap programot.
Jelenleg egy hibája van, csak 1 csomagot képes elküldeni, utána nem csinál semmit. Nem ír ki hibát, nem fagy le, de csak a programból való kilépés majd újraindítás után tud csomagot küldeni. Egyet.
A program 2-3 szálon fut, ami szerintem a hiba forrása.
public partial class Form1 : Form
{
Stream tcp_stream;
public Form1()
{
InitializeComponent();
}
public void TCP_Client_Init()
{
c_src_port = Convert.ToInt32(client_src_port.Text);
c_dst_port = Convert.ToInt32(client_dst_port.Text);
client_ips = Dns.GetHostAddresses(client_ip_address.Text);
TCP_Client = new TcpClient();
try
{
TCP_Client.Connect(client_ips[0], c_dst_port);
}
catch (Exception e)
{
Close_Client();
}
if(run_client)
{
tcp_stream = TCP_Client.GetStream();
TCP_Client.Client.ReceiveTimeout = 100;
TCP_Client.Client.SendTimeout = 100;
}
}
public void Run_TCP_Client_Listen()
{
bool client_rxd_packet = false;
while(run_client)
{
try
{
client_rxd_packet = true;
tcp_stream.Read(client_BUFFER, 0,256);
string value = Encoding.ASCII.GetString(client_BUFFER);
write_to_rxd_screen(value);
client_BUFFER = null;
}
catch (Exception e) { }
if(client_rxd_packet)
{
client_rxd_packet = false;
}
}
TCP_Client.Close();
}
public void Client_Send_TCP_String(string value)
{
//tcp_stream = TCP_Client.GetStream(); // HIBA <<-- ITT
client_BUFFER = Encoding.ASCII.GetBytes(value);
try
{
tcp_stream.Write(client_BUFFER, 0, client_BUFFER.Length);
}
catch (Exception e)
{
Close_Client();
}
}
}A hiba a Client_Send_TCP_String() funkció első sorában van.
Ha kihagyom a tcp_stream = TCP_Client.GetStream(); sort akkor 1 csomagot el tud küldeni, de többet nem.
Ha beírom, akkor ez a hibaüzenet jelenik meg:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.dllAdditional information: A művelet nem engedélyezett nem csatlakoztatott szoftvercsatornákon.
A Client_Send_TCP_String() akkor fut le, amikor a Send gombra kattintok (ezt kihagytam a fenti kódból).
A Run_TCP_Client_Listen() viszont egy másik szálon fut.Ha jól értelmeztem a hibakódot, akkor a gondom az, hogy a tcp_stream-et 2 szálon egy időben használnám. A tcp_stream.Read()-nél, ill. a tcp_stream.Write()-nál.
Ezt valamilyen invoke (módszer/funkció)-val lehetne megoldani? Hogyan?
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Hardcore café
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Gaming notebook topik
- Sokrétű segédkijelzővel gyarapodott a Corsair portfóliója
- Elektromos autók - motorok
- HThomas: Az ideális home office monitor nyomában
- Milyen légkondit a lakásba?
- sziku69: Szólánc.
- Geri Bátyó: Agglegénykonyha 1 – rizseshús másképp
- Háztartási gépek
- További aktív témák...
- Eladó Ryzen 7 7700X, 7800 XT, 1Tb M.2, 750W, 32Gb DDR5 AM5 gamer pc!
- MINI PC HP PRODESK 600 G2 G3 G4 G5 i3 és i5 6-9. gen gar. Budapest MPL Foxpost
- AZTA! HP EliteBook 840 G8 Fémházas Laptop Ultrabook 14" -60% i7-1185G7 16/512 FHD IPS Iris Xe
- Asus P8H61-M LX R2.0 LGA 1155 alaplap, + Quad Core i5-2500 CPU
- LEGO Technic - Bugatti Chiron (42083)
- Kodak PD460 Instant Dock Printer / Számla és Garancia
- Gamer PC-Számítógép! Csere-Beszámítás! Mini PC! I5 10600KF / RTX 3060 12GB/ 16GB DDR4 / 1TB SSD
- Dell P2419H / P2419HC Full HD LED IPS 24" LCD monitorok
- BESZÁMÍTÁS! ASUS A620M R7 7700X 32GB DDR5 1TB SSD RX 7900 XTX 24GB ZALMAN I3 NEO EVGA 850W
- BESZÁMÍTÁS! HP EliteDesk 800 G1 TWR brand számítógép garanciával hibátlan működéssel
Állásajánlatok
Cég: FOTC
Város: Budapest