Ich habe eine C++ - Anwendung, die Bestandsdaten empfängt und über Socket an eine andere Anwendung weiterleitet (die als Server fungiert).Umgang mit Hochfrequenzdaten?
Tatsächlich ist die WSASend
Funktion kehrt mit Fehlercode 10055 nach kleiner Sekunde und ich fand, dass die Fehlermeldung
„Kein Pufferraum zur Verfügung. Ein Vorgang auf einem Socket konnte nicht ausgeführt werden, weil das System Pufferspeicher fehlte oder weil eine Warteschlange voll war ".
Das Problem tritt nur auf, wenn ich die Anwendung nach den Marktstunden ausführen, da wir die ganzen Tag Daten (ca. 130 MB) in wenigen Minuten erhalten (ich nehme an, das ist relativ groß) Ich mache so einen Robustheitstest .
Ich versuchte, den Sendepuffer SO_SNDBUF mit setsockopt
Funktion zu erhöhen, aber das gleiche Problem immer noch da. Wie kann ich dieses Problem lösen? hängt das mit dem Empfängerpuffer zusammen?
Senden Details:
Für jede vollständige Nachricht ich die Sendemethode aufrufen, die
EDIT überlappten Buchsen verwendet: Kann jemand allgemeine Richtlinien geben Hochfrequenzdaten in C++ zu behandeln?
Wie warten Sie, bis jeder Sendevorgang abgeschlossen ist?Über eine IOCP-Benachrichtigung oder ein Ereignis in der OVERLAPPED-Struktur? –
Ich denke, das ist das Problem :), ich warte nicht, bis die Sendefunktion beendet –
Gute Sachen. Hoffe das behebt es für dich. –