"We are back" « oc.at

solved(??): c#: datenpakete >1kb senden/empfangen

Jedi 31.03.2003 - 13:11 3249 24
Posts

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von FMFlash
ich nehme an er meint multiple verbindungen auf einem tcp socket ;)

Geht das überhaupt?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
falls es bei c# keine klasse für sowas gibt, müsste man sich so ein multiplexing selber programmieren

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
Zitat von that
Geht das überhaupt?

natürlich, es können praktisch beliebig viele clients auf ein und dem selben tcp socket des hosts verbunden sein.

Zitat von atrox
falls es bei c# keine klasse für sowas gibt, müsste man sich so ein multiplexing selber programmieren

von selbst programmieren bin ich eigentlich die ganze zeit über ausgegangen

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11343
Zitat von FMFlash
es können praktisch beliebig viele clients auf ein und dem selben tcp socket des hosts verbunden sein.

und wenn man send aufruft, an welchen Client geht das dann? Hast du ein Codebeispiel? Oder meinst du doch "Port" statt "Socket"?

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
Zitat von that
und wenn man send aufruft, an welchen Client geht das dann? Hast du ein Codebeispiel? Oder meinst du doch "Port" statt "Socket"?

stimmt, ich meinte natürlich PORT :bash:

man kann die SOCKADDR_IN struct des sockets während bereits ein verbindung besteht afaik nicht mehr ändern, oder? sonst könnte man doch über die struktur die clients auseinanderhalten bzw bestimmen an wen die daten gesendet werden - mit nur einem socket.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
(gilt jetzt für direkten zugriff auf sockets, nicht für wrapper objekte)

nach dem zustandekommen eines sockets bekommst du vom tcpip-stack einen descriptor (eine nummer wie zb ein file handle), du kannst dann eine connect()-operation darauf ausführen, usw.. aber nachträgliche änderungen in der struct wirken sich dann nicht mehr auf den netzwerk-stack aus. auch beim ausführen von sendto() werden die zusätzlichen parameter ignoriert.

ich glaub wir kommen jetzt zu sehr von c# ab.

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
Zitat von atrox
aber nachträgliche änderungen in der struct wirken sich dann nicht mehr auf den netzwerk-stack aus. auch beim ausführen von sendto() werden die zusätzlichen parameter ignoriert.

dachte ich mir schon, also braucht man pro connection ein socket objekt.

ps: sendto () hat nix mit tcp zu tun, das is die udp-daten-versend-funktion ;)
du meintest wohl send ()

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
es ist, wie gesagt, möglich sendto() zu verwenden, aber wenig sinnvoll:
Zitat
sendto() is normally used on a connectionless socket to send a datagram to a specific peer socket identified by the to parameter. Even if the connectionless socket has been previously connected to a specific address, to overrides the destination address for that particular datagram only. On a connection-oriented socket, the to and tolen parameters are ignored; in this case, the sendto() is equivalent to send().

---
ok, aber wie gesagt, wir entfernen uns zusehens von c#, und sollten mal die reaktion vom Jedi abwarten.

FMFlash

tranceCoder
Avatar
Registered: Mar 2001
Location: Wien
Posts: 2037
der thread ist bereits als "solved" markiert :confused:

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
Zitat von FMFlash
der thread ist bereits als "solved" markiert :confused:

nach der beschreibung von Jedi sollte es wohl eher "workaround" heissen :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz