UDP-сокет-клиент в .NET - PullRequest
       24

UDP-сокет-клиент в .NET

2 голосов
/ 01 апреля 2010

Я использую UDP Sokckts в своем клиентском приложении. Вот некоторые фрагменты кода:

SendIP = new IPEndPoint(IPAddress.Parse(IP), port);
ReceiveIP = (EndPoint)(new IPEndPoint(IPAddress.Any, 0));
socket = new Socket(
    AddressFamily.InterNetwork,
    SocketType.Dgram,
    ProtocolType.Udp);
socket.Bind(ReceiveIP);

и для получения (пока (true)):

byte[] data = new byte[BUFFERSIZE];
int receivedDataLength = socket.ReceiveFrom(data, ref ReceiveIP);
string s= Encoding.ASCII.GetString(data, 0, receivedDataLength);

Я делаю бесконечное время, пока на приеме, есть другие вещи, которые нужно сделать в это время, даже если ничего не получено. Я хочу проверить, есть ли фактически доступные данные, тогда получение не ждите. Обратите внимание, что текущий метод получения ожидает, пока сервер не отправит сообщение.

1 Ответ

2 голосов
/ 01 апреля 2010

Вы можете использовать socket.Available(), чтобы определить, есть ли какие-либо ожидающие данные перед вызовом ReceiveFrom(). В идеале, однако, вы должны рассмотреть возможность обработки ввода для других потоков, используя BeginReceiveFrom() и его асинхронных друзей.

...