008
04.12.2003, 09:13 Uhr
~TAFA
Gast
|
moin, @ao danke für dein ausführliche erklärung, hab wieder was dazugelernt
Zitat: |
N-mal im Abstand von M Millisekunden
|
genau das war das problem wie groß ist N M , und ich habe es nicht verstanden warum alle TCP wollen wenns um Prozess-Visualisierung geht ich werde aufjeden fall UDP nehmen mit etwas logik dahinter.
und habe einpaar möglichkeiten gefunden wie man TCP beeinflussst ich poste das mal vielleicht hilft das jemandem: Winsock.h C++ getsockopt(int getsockopt (SOCKET s,int level,int optname, char FAR* optval, int FAR* optlen );
Erklärung: SO_BROADCAST Wird nur von UDP unterstützt
SO_DEBUG Wird nur von TCP Unterstützt. wenn Aktiviert verfolgt der Kernel für alle Pakete, die von TCP für den Socket empfangen oder verschickt wurden,alle Informationen im Ringpuffer .Unter Unix mit Programm trpt Unter Windows keine Ahnung.
SO_ACCEPTCONN SO_DONTLINGER SO_DONTROUTE Diese Option gibt an , das ausgehende Pakete den normalen Routing-Mechanismus des darunter liegenden Protokolls umgehen Sollen. wenn Ziel Adresse nicht im gleichen Netzwerk ist wird Fehlermeldung ausgegeben ( WSAENETUNREACH).
SO_ERROR Fehler aufgetreten returnwert ist WSAGetLastError
SO_KEEPALIVE wenn Gesetzt und über den Socket innerhalb 2 Stunden in keiner der Beiden Richtungen Daten gesendet wurden ,Sendet TCP automatisch ein Keepalive oder Lebenszeichen an den Peer. Diese Sondierung ist ein TCP Segment auf das der Peer Antworten muss. Möglichkeit 1: Der Peer antwortet mit ACK alles OK Möglichkeit 2: Der Peer antwortet mit RST das Peer Rechner ist zusammengebrochen Socket wird geschlossen FM ist WSAECONNRESET Möglichkeit 3: Der Peer antwortet gar nicht es wird versucht im abstand von 75 Sekunden erneut zu senden wenn innerhalb von 11 Minuten und 15 Sekunden kein antwort kommt wird Socket Geschlossen und FM ist WSAETIMDOUT
SO_LINGER Diese Option gibt an wie OnClose Funktion arbeitet nur TCP struct LINGER { int l_onoff /*o=an 1=aus*/ int l_linger /*linger_zeit in sekunden*/} Möglichkeit 1: l_onoff =0 && l_linger = 0 Standart es wird versucht Inhalte des Sockets an das ende zu verschicken (TIME_WAIT Status) Möglichkeit 2: l_onoff = 1 && l_linger = 0 Verbindungsstatus wird auf CLOSE gesetzt RST wird gesendet (KEIN TIME_WAIT Status) Möglichkeit 3: l_onoff=1 && l_linger!=0 es wird versucht solange l_linger zeit abläuft Sendepuffer zur versenden wenn l_linger abgelaufen ist, wenn noch Daten vorhanden FM WSAEWOULDBLOCK
SO_OOBINLINE wenn diese Option gesetzt ist werden Out-Of-Band Daten in den Normalen Warteschlange eingefügt dann kann man nicht den Flag MSG_OOB einsetzen
SO_RCVBUF Bei TCP ist der verfügbare Platz im Emfangspuffer des Sockets das Fenster, das TCP dem anderen ende bekannt gibt. Der Empfangspuffer des TCP-Sockets kann nicht zum überlauf gebracht werden, da es dem Peer nicht erlaubt ist, über das bekannt gegebene Fenster hinaus Daten zu Senden. TCP - Flusskontrolle wenn der Peer mehr Daten Sendet als vereinbart werden die Daten vom Empfangenen TCP gelöscht.Bei UDP wird ein Datagramm , das nicht in den Socket - Empfangspuffer passt, einfach gelöscht. UDP hat kein Flusskontrolle eine schneller Sender kann einen langsamen Empfänger mit Daten überfluten. Datagramme werden vom langsamen UDP einfach gelöscht.
SO_SNDBUF siehe SO_RCVBUF
SO_RCVLOWAT
SO_SNDLOWAT
SO_REUSEADDR The socket can be bound to an address which is already in use SO_REUSEPORT ???? SO_TYPE Diese Option liefert den Socket Typ zurück SOCK_STREAM oder SOCK_DGRAM
SO_USELOOPBACK GetSockOpt::ERRORgesockopt()::Fehler ID = 10042 Beim Aufruf von getsockopt oder setsockopt wurde eine nicht unterstützte Option bzw. Ebene angegeben IP_TOS Type Of Service IP_TTL Time To Live TCP_NODELAY
int setsockopt (SOCKET s,int level,int optname, const char FAR * optval, int optlen); |