S
SaschaK
Hallo,
ich habe mit der WinAPI/C++ eine Client-/Server-Anwendung programmiert. Das Programm kann eine vom Anwender angegebene Packetgröße solange senden bis der Stop-Button gedrückt wird. Das Senden wird mithilfe einer Thread-Funktion DWORD WINAPI ClientClass::Sendto(LPVOID ), die ich in meiner Klasse Client als Methode definiert habe, realisiert.
Nun wollte ich das Programm so erweitern, daß das Senden eine vom Anwender definierte Zeit lang anhält. Das Programm soll nach der angegebenen Sendezeit (Profil 1) nicht stoppen, sondern eine zweite angegebene Zeit lang mit einer anderen Packetgröße senden (Profil 2).
Wenn z.B. gilt:
Profil 1: Paketgröße 64 Byte, Sendezeit 3 ms
Profil 2: Paketgröße 128 Byte, Sendezeit 2 ms
soll das Programm folgendermaßen senden: Profil 1 -> Profil 2 -> Profil 1 -> ... (bis Stop-Button gedrückt wird)
Mein Frage ist nun wie man dies mit WinAPI/C++ realisieren kann (Code)? Gibt es spezielle Timer-Klassen?
Vielen Dank im Voraus.
ich habe mit der WinAPI/C++ eine Client-/Server-Anwendung programmiert. Das Programm kann eine vom Anwender angegebene Packetgröße solange senden bis der Stop-Button gedrückt wird. Das Senden wird mithilfe einer Thread-Funktion DWORD WINAPI ClientClass::Sendto(LPVOID ), die ich in meiner Klasse Client als Methode definiert habe, realisiert.
Code:
DWORD WINAPI ClientClass::Sendto(LPVOID )
{
char uData[PACKET_LENGTH1]; // für Profil 1
char uData2[PACKET_LENGTH2]; // für Profil 2
struct hostent *Host;
struct sockaddr_in Dest;
// Auflösen (Ziel-) Hostname, d.h. Umwandlung Servername in IP-Adresse
Host=gethostbyname(Client.Destination);
if (Host == NULL)
{
MessageBox(NULL, "Fehler beim Umwandeln des Servernamen in eine IP-Adresse!","Error",MB_OK|MB_ICONERROR);
return (FALSE);
}
Dest.sin_addr = *((in_addr*)Host->h_addr);
Dest.sin_family = AF_INET;
Dest.sin_port = htons(Client.Port);
// Sende Daten bis gestoppt wird
while (!Client.ShouldStop)
{
if (sendto(Client.my_socket, uData, Client.DataSize1, 0, (sockaddr*)&Dest, sizeof(Dest)) == SOCKET_ERROR)
{
MessageBox(NULL, "Konnte UDP-Daten nicht senden!","Fehler",MB_OK|MB_ICONERROR);
return (FALSE);
}
}
return 0;
}
Nun wollte ich das Programm so erweitern, daß das Senden eine vom Anwender definierte Zeit lang anhält. Das Programm soll nach der angegebenen Sendezeit (Profil 1) nicht stoppen, sondern eine zweite angegebene Zeit lang mit einer anderen Packetgröße senden (Profil 2).
Wenn z.B. gilt:
Profil 1: Paketgröße 64 Byte, Sendezeit 3 ms
Profil 2: Paketgröße 128 Byte, Sendezeit 2 ms
soll das Programm folgendermaßen senden: Profil 1 -> Profil 2 -> Profil 1 -> ... (bis Stop-Button gedrückt wird)
Mein Frage ist nun wie man dies mit WinAPI/C++ realisieren kann (Code)? Gibt es spezielle Timer-Klassen?
Vielen Dank im Voraus.