TCP Stream zuordnen
Übersicht

![]() |
YuenBetreff: TCP Stream zuordnen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich arbeite an einem Online-Spiel und soweit läufts auch ganz gut. Testweise nutze ich TCP und habe mir einen kleinen primitiven Server in B3D gebastelt(Client auch in B3D). Der Server läuft soweit so gut, ich würde nur gern wissen, wie ich meine Client's zuordnen kann ? - Testweise habe ich es so eingestellt, dass wenn man im Client eine Maustaste drückt, auf dem Server "Test" erscheint. Das funktioniert auch mit mehreren Clients ganz gut. Jedoch habe ich dann immer untereinander einfach nur "Test" stehen und nicht woher es kommt. Gibt es eine Möglichkeit, das mir die IP des Clients angezeigt wird(in UPD geht das doch glaub ich) ? - Oder muß ich bei der Clientprogrammierung, dem Client einen Namen geben und er sendet den Namen+Nachricht ? MFG Yuen |
||
![]() |
etlam |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
wenn ich die Frage richtig verstanden habe, müsste es so gehen: Server: Code: [AUSKLAPPEN] ;server server=CreateTCPServer(477) Repeat strrea = AcceptTCPStream(server) If stream Then ip_1 = TCPStreamIP(stream) ip$ = DottedIP(ip_1) Print ip$ EndIf Forever Client: Code: [AUSKLAPPEN] st = OpenTCPStream("127.0.0.1",477) End Mit TCPStreamIP(stream) erhält man irgendetwas komisches wie "2130706433", damit man eine normale IP bekommt, muss man DottedIP(ip_1) machen, was dann "2130706433" in "127.0.0.1" umwandelt. Ich hoffe, ich konnte dir helfen, etlam |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Edit: Zu spät ![]() Mit TCPStreamIP(stream) bekommst du eine Integer-IP des Clients. Dem Client einen Nicknamen zuordnen ist aber bestimmt übersichtlicher, die Spieler wollen sich später wahrscheinlich keine IPs merken ![]() |
||
![]() |
Yuen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal THX für die Antwort, das mit der IP funktioniert sehr gut.
Die Sache ist die, der Client sendet eine Nachricht an den Server und der Server sendet eine Nachricht zurück. Dementsprechend muß zugeordnet werden von wo, welche Nachricht kam. Da alle Nachrichten in einem einzigen Stream ankommen und abgehen, brauche ich eine Zuordnung. Ein Problem tritt wohl dann auf, wenn mehrere Personen die gleiche IP haben. |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
~VERSCHOBEN~ Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde. MfG D2006 |
||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
leute mit gleicher ip kommen nicht auf den server... | ||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei TCP kommen die Nachrichten nicht in einem einigen Stream an!
Du hast für jeden Clienten einen eigenen Stream. Bei UDP ist das was anderes, da ist nur ein Stream. Dort kannst du anhand Port und IP die User seperieren. |
||
![]() |
Yuen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei TCP hab ich doch auch nur einen Stream. Wenn ich den Server starte und dann zwei Client's und die Client's dann beide Test senden, erscheint Test untereinander, Print wird nur für einen Stream verwendet. Der Server aktzeptiert doch nur einen Stream, also senden alle Clients in diesen Stream. | ||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das AcceptStream akzeptiert einen Clienten.
Du erhälst als Rückgabe entweder 0 oder einen neuen Stream. Und jeder Stream ist für genau einen Clienten. |
||
![]() |
Yuen |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmmm verstehe, und wie mache ich diesen Stream "sichtbar" ? - ich meine wie kann ich ihn darstellen oder auswerten ? - so dass ich eine Information zurücksenden(an den Client) kann ? | ||
![]() |
Yuen |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann mir denn keiner helfen ? - ich kann Informationen von den Client's an den Server senden, wie kann ich denn nun Informationen vom Server an die einzelnen Client's senden ? | ||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
mit Types
Code: [AUSKLAPPEN] Type Client field Stream end type stream = AcceptTcpStream() if Stream <> 0 C.Client = new Client C\Stream = Stream Stream = 0 endif So in etwa ![]() |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
Yuen |
![]() Antworten mit Zitat ![]() |
---|---|---|
und wie kann ich damit Informationen an die einzelnen Client's senden ? | ||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
grmpf!
na mit Code: [AUSKLAPPEN] For C.Client = each Client if ReadAvail(C\Ctream) <> 0 blubb endif next so halt in der art |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Indem du in den Stream aus dem due die Daten des Clienbts list einfach schreibst. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group