C# + UDPClient + php

0

Witam.
Mam program w którym jest kod

  UdpClient udpClient = new UdpClient(8080);
            while (true)
            {
                IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
                Byte[] receivedBytes = udpClient.Receive(ref RemoteIpEndPoint);
              System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();
             
                string returnData = ascii.GetString(receivedBytes);
            
                
                label2.Text= (RemoteIpEndPoint.Address.ToString() + ":" + returnData);
                this.Refresh();
            }

oraz stronke WWW w której mam taki skrypt :

<?php
$fp = fsockopen("udp://127.0.0.1", 8080, $errno, $errstr);
if (!$fp) {
    echo "ERROR: $errno - $errstr<br />\n";
} else {
    fwrite($fp, "kotek");
   echo "<center>ok</center>";
    fclose($fp);
}
?>

chodzi o to żeby strona wysyłała tekst do mojego programu przez udp. No i wszystko się ładnie kompiluje ale przy uruchomieniu tego skryptu na stronce aplikacja się zawiesza ....może wie ktoś czemu ...

0

Właśnie odkryłem że problem jest w samej aplikacji ..wywołując tylko komendy :

UdpClient udpClient = new UdpClient(8080);
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receivedBytes = udpClient.Receive(ref RemoteIpEndPoint);

aplikacja się zawiesza ...tylko czemu

pracuje na WIn7 visual C# 2008

0

A może zamiast IPAddress.Any spróbuj IPAddress.Loopback ?

0
mimk123 napisał(a)

Byte[] receivedBytes = udpClient.Receive(ref RemoteIpEndPoint);



W tym wywołaniu program czeka dopóki coś nie przyjdzie na port. Zamiast udpClient.Receive wywołaj udpClient.BeginReceive. Obsługa jest trochę inna ale program nie zawiesza się w oczekiwaniu na dane tylko w momencie przyjścia danych jest wywoływana asynchronicznie metoda, w której obsłużysz sobie odebranie danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1