Új hozzászólás Aktív témák
-
G.A.
aktív tag
Üdv!
A problémám a következő:
Építettem, pontosabban építgetek, egy mikorcontrollert, amit hálózatra kötnék. Hogy az eszközt távolról is elérhessem írtam hozzá C#-ben egy GUI-s alkalmazást.A kommunikációra az UDP protokollt választottam, mivel sokkal egyszerűbb, mint a TCP.
A program külsőre így néz ki:
A felső sorokban a Wireshark által kiírt csomagok láthatóak. A hálózaton a 11-es gép a vezérlő, a 8-as a PC.
Látható, hogy megy a küldés és a fogadás is, ami nem megy az a a programban a forrás port 9800-re való beállítása. Pontosabban az megy, csak ekkor a program összeomlik, a következő hibaüzenettel:
Additional information: Az összes szoftvercsatorna-cím használatának általában csak egy módja (protokoll/hálózat cím/port) engedélyezett
Tehát jelenleg arra nem vagyok képes, hogy a beérkezett és a küldendő csomag source<-> destination portjait fel tudjam cserélni.
A kód:
namespace Smart_Home
{
public partial class Form1 : Form
{
public static byte[] data = new byte[1536], TX_BUFFER = new byte[1536], RX_BUFFER = new byte[1536];
public static bool connection_status = false;
public static byte[] IP_Address = new byte[4];
public static string ip_address_string;
public Form1()
{
InitializeComponent();
}
public void write_to_screen(string value)
{
if (InvokeRequired)
{
this.Invoke(new Action<string>(write_to_screen), new object[] { value });
return;
}
screen.Text += value;
}
public void RecieveChallenge()
{
IPEndPoint AVREndPoint = new IPEndPoint(IPAddress.Parse(rx_ip_address.Text), Convert.ToInt32(rx_dst_port.Text));
UdpClient client = new UdpClient(Convert.ToInt32(rx_dst_port.Text));
while (connection_status)
{
RX_BUFFER = client.Receive(ref AVREndPoint);
write_to_screen(Encoding.ASCII.GetString(RX_BUFFER));
write_to_screen(Environment.NewLine);
}
client.Close();
}
public void connect_Click(object sender, EventArgs e)
{
if (rx_ip_address.TextLength != 0 && rx_dst_port.TextLength != 0)
{
if (!connection_status)
{
connect.Text = "Disconnect";
connection_status = true;
send.Enabled = true;
Thread recieveChallengeThread = new Thread(new ThreadStart(RecieveChallenge));
recieveChallengeThread.Start();
}
else
{
connect.Text = "Connect";
connection_status = false;
send.Enabled = false;
}
}
}
public void send_Click(object sender, EventArgs e)
{
IPEndPoint AVREndPoint = new IPEndPoint(IPAddress.Parse(tx_ip_address.Text), Convert.ToInt32(tx_dst_port.Text));
UdpClient client = new UdpClient(Convert.ToInt32(tx_src_port.Text));
TX_BUFFER = Encoding.ASCII.GetBytes(send_data.Text);
client.Send(TX_BUFFER, TX_BUFFER.Length, AVREndPoint);
client.Close();
}
}
}
Ú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!
- Bambu Lab 3D nyomtatók
- PROHARDVER! - abszolút kezdőknek
- Szívós, szép és kitartó az új OnePlus óra
- Önvédelmi fegyvernek is elmenne a Keychron analóg billentyűzete
- Milyen légkondit a lakásba?
- Project Motor Racing-Straight4 Studios
- AMD Navi Radeon™ RX 9xxx sorozat
- Megtartotta Európában a 7500 mAh-t az Oppo
- Milyen okostelefont vegyek?
- Techdemóból valóság, újból bemutatkozott a Zoopunk
- További aktív témák...
- HIBÁTLAN iPhone 13 mini 256GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3408
- Byintek Love U14 Projektor
- Boyoye digitális beltéri HD tv antenna / 12 hó jótállás
- Samsung Galaxy A33 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- LG 27GS60QX-B - 27" Ívelt VA - 2560x1440 2K QHD - 180Hz 1ms - AMD FreeSync Premium
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest

