Ich möchte ein ähnliches Verhalten wie folgt erhalten:
Das Problem ist, dass wenn meine Funktion excCommand ("help") läuft nur ein wenig Text empfangen und gedruckt wird. Meine Textdatei ist dies:
%Vor%nur COMMAND HELP wird gedruckt. Ein weiteres Problem ist, dass wenn ich einen Befehl eingabe nichts gedruckt wird und nach 2 Befehl Client beenden. Dies ist insbesondere das Stück:
%Vor%Dies ist der Server:
%Vor%Handler:
%Vor%und das ist mein Klient:
%Vor%Entschuldigen Sie, dass Sie so langatmig sind
Die Funktionen recv()
und send()
garantieren nicht, dass alle Daten gesendet / empfangen werden (siehe man recv , Mann senden )
Sie müssen Ihre eigene send_all()
und recv_all()
implementieren, etwas wie
Der folgende Leitfaden kann Ihnen helfen, Beej's Guide zur Netzwerkprogrammierung
Übliche Probleme.
%Vor% Ungültig. numBytesRecv
könnte Null sein, in diesem Fall gibt es überhaupt keine Nachricht, ansonsten muss es positiv sein, wie Sie bereits für negativ getestet haben, und es zeigt die tatsächliche Länge der Nachricht an, was nicht unbedingt ist nullterminiert Wechseln Sie zu:
und dann:
%Vor%Sinnlos. Entfernen.
%Vor% An diesem Punkt sollten Sie nach numBytesRecv < 0
suchen und perror()
oder einen seiner Freunde aufrufen.
Tags und Links c sockets send client-server recv