sockets



  • Hallo,

    ich habe zwei Fragen zum Thema Winsock:

    1. Habe ich bei Sockets zwei Kanäle? Einen, in den der Server schreibt und von welchem der Client liest und einen zweiten Kanal, in den der Client schreibt und von welchem der Server liest? Oder gibt es nur einen Kanal und ich muss selbst gucken, dass zB ein Client nicht liest, was er selbst geschrieben hat?

    2. Kann ich per Winsock auch anstelle von einem char buffer zB ein struct verschicken?

    Danke schonmal, und bitte dran denken, falls ich doofe Fragen stelle, bitte nicht direkt die Rute rausholen :xmas2:



  • Hallo und Guten Tag.

    Ich habe in meinem derzeitigen Projekt 3 zyklisch (200 ms) miteinander laufende Client/Server Verbindungen und nach meinem Verständnis existiert jeweils nur ein Kanal pro Verbindung, d.h. zu jeder Verbindung wird ja auch ein entsprechender Computername bzw. die entsprechende IP-Adresse (in hosts) und eine entsprechende Port-Adresse (in services) angegeben, somit kann zu jeder Client/Server Verbindung ja auch nur mit send/recv auf der einen Seite und entsprechend recv/send auf der anderen Seite kommuniziert werden.

    Zum struct kann ich nichts sagen, daweil ich grundsätzlich nur mit char buffer arbeite und somit entsprechend vorher umwandle.

    MfG

    ZZR-1100



  • pommes schrieb:

    Hallo,

    ich habe zwei Fragen zum Thema Winsock:

    1. Habe ich bei Sockets zwei Kanäle? Einen, in den der Server schreibt und von welchem der Client liest und einen zweiten Kanal, in den der Client schreibt und von welchem der Server liest? Oder gibt es nur einen Kanal und ich muss selbst gucken, dass zB ein Client nicht liest, was er selbst geschrieben hat?

    2. Kann ich per Winsock auch anstelle von einem char buffer zB ein struct verschicken?

    Danke schonmal, und bitte dran denken, falls ich doofe Fragen stelle, bitte nicht direkt die Rute rausholen :xmas2:

    Bitte nicht die Rute rausholen? Es gibt keine doofe Fragen, sondern nur noch dümmere Antworten. Fragen ist Ehrenhaft.

    Wenn Du einen Socket generierst und der via accept() mit dem Client angenommen wurde, so ist dieser Socket read/write. Server und Client können sich anhand bestimmte Muster kommunizieren, die Geschwindigkeit spielt mal keine Rolle. Es hat sich aber eingebürgert, das man in den Sende- bzw. Empfangsteilen in den ersten sechs Bytes mitteilt, wie groß die Message ist.

    Beispiel:

    4;Bla

    Vor dem ; steht die 4 was sagt: Es sind vier Bytes hinter mir.
    Zum Strukt:

    es geht jederzeit, solange Du keine Pointer darin verwaltest. Deine Pointer sind nämlich am anderen Ort bedeutungslos. Die realen Daten aber nicht. :xmas1:


Anmelden zum Antworten