Как проверить, прибыл новый udp-пакет или нет?
Привет Всем,
У меня есть программа, которая может непрерывно получать udp-пакеты с сервера,
но как я могу проверить, что новый пакет получен ufrom с сервера?
Свою программу для приема udp-пакета я написал ниже.
если у кого-то есть идея по этому поводу , пожалуйста, поделитесь ею!
Спасибо в addvance
ваше здоровье!
Что я уже пробовал:
Класс сокета TCP
файл .cpp
void UdpReceivingSocket::OnReceive(int nErrorCode) { nRead = Receive(buff, 4096); icount1++; switch (nRead) { case 0: // Connection was closed. Close(); break; case SOCKET_ERROR: if (GetLastError() != WSAEWOULDBLOCK) { AfxMessageBox(L"Error occurred"); Close(); } break; default: // Normal case: Receive() returned the # of bytes received. buff[nRead] = 0; CAsyncSocket::OnReceive(nErrorCode); } .h file #pragma once #include <afxsock.h> #include "FILE_TRIALDlg.h" # include "TcpSendSocket.h" class UdpReceivingSocket : public CAsyncSocket { void OnReceive(int nErrorCode); public: UdpReceivingSocket(); ~UdpReceivingSocket(); BYTE buff[4096]; int nRead; };
0x01AA
Например, в OnReceive вы можете отправить сообщение windows в определенное (возможно, скрытое) окно. В случае, если вы это сделаете, обязательно используйте PostMessage
и никогда_ SendMessage
Richard MacCutchan
Что ты имеешь в виду как я могу проверить"? Вы получаете уведомление в функции OnReceive. Но чтобы узнать, какая часть сообщения отправителя получена, вам нужно установить протокол обмена сообщениями между сервером и клиентом, чтобы каждый конец знал, когда получено новое сообщение. Например, добавление заголовка сообщения, который дает длину сообщения, сообщает получателю, сколько байтов нужно принять для полного сообщения.
KarstenK
udp немного ненадежен, потому что его соединение не имеет состояния. Рассмотрите возможность использования tcp.
Member 14499788
Проблема решена!!!
Я использовал счетчик для класса сокетов.
Спасибо всем за предложения!
Я действительно ценю всех вас здесь за помощь таким людям, как мы, которые являются новичками.
Отличная работа!!
овации