Ú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!
- Elektromos cigaretta 🔞
- TCL LCD és LED TV-k
- Sütés, főzés és konyhai praktikák
- Lényegretörő Akasa hálókártya a 10 gigabitre vágyóknak
- Ha Darwinra hallgat az AI, nehéz lesz megállítani
- Kertészet, mezőgazdaság topik
- Kerékpárosok, bringások ide!
- Poco F8 Ultra – forrónaci
- Egyre inkább szoftverrel segítene a Core CPU-k teljesítményén az Intel
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- További aktív témák...
- Razer Kraken V4 X RGB Gaming Headset
- GIGA AKCIÓ!!! MacBook Air M4 24GB 512GB Garancia! SILVER
- AKCIÓ! ASRock B450M R5 5500 16GB DDR4 512GB SSD RTX 2060 6GB Zalman T3 Plus ADATA 600W
- Asus TUF B760-Plus Wifi DDR5 (kis hibával)
- DELL PowerEdge R630 rack szerver - 2xE5-2650v3 (20 mag / 40 szál, 2.3/3.0GHz), 32GB RAM, 66921Ft+ÁFA
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
