Mehrere Daten über einen Port
Übersicht

ZAiMoNBetreff: Mehrere Daten über einen Port |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich habe keine Ahnung wie man aus einem Port mehr informationen bekommt.
z.b x position des Chars y position des Chars frame des Chars .... Wenn ich für jede information 1 port verwende habe ich für 2 spieler 6 ports das ist eigentlich zuviel weil dann noch 2 ports fürs chatten gebaucht werden. Mein spiel soll dann ein 8 player game werden. Das wird ziehmlich ruckeln. Wie bekommt man mehrere infos aus einem Port? bzw wie sendet man mehre Infos in durch einem Port also nur 1 Stream. |
||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Alles nur durch 1 Port machen:
Client: Code: [AUSKLAPPEN] Const CLIENT_CONNECTED = 1 Const CLIENT_DISCONNECTED = 2 Const CLIENT_CHAT = 3 server_ip = 389183 ;Nur beispiel, es gibt eine Funktion die die IP in ein Int umwandelt server_port = 8000 stream = CreateUDPStream() WriteByte stream, CLIENT_CONNECTED WriteString stream, client_name$ SendUDPMsg stream, server_ip, server_port WriteByte stream, CLIENT_CHAT WriteString stream, client_name$ WriteString stream, chat_text$ SendUDPMsg stream, server_ip, server_port WriteByte stream, CLIENT_DISCONNECTED WriteString stream, client_name$ SendUDPMsg stream, server_ip, server_port CloseUDPStream(stream) Das heisst du versendest zuerst immer ein Byte. Dieses Byte identifiziert die Information. Am besten du speicherst es in Konstanten damit du dir nicht so viele Nummern merken musst. Nach dem Byte den Inhalt der Information. String, Float oder was auch immer. Natürlich kann man soviele sachen senden nach dem Byte wie man will. Server: Code: [AUSKLAPPEN] Const CLIENT_CONNECTED = 1 Const CLIENT_DISCONNECTED = 2 Const CLIENT_CHAT = 3 Type client Field name$ Field ip Field port End Type stream = CreateUDPStream(8000) Repeat If RecvUDPMsg(stream) <> 0 player_ip = UDPMsgIP(stream) player_port = UDPMsgPort(stream) message_id = ReadByte(stream) ;Welche Information werden wir bekommen? Select message_id Case CLIENT_CONNECTED name$ = ReadString(stream) c.client = new client c\name$ = name$ c\ip = player_ip c\port = player_port ;... was gemacht werden muss wenn sich ein client verbindet Case CLIENT_DISCONNECTED name$ = ReadString(stream) For c.client = each client If c\name$ = name$ then delete c Next ;... was gemacht wird wenn client getrennt. Case CLIENT_CHAT name$ = ReadString(stream) text$ = ReadString(stream) ;An alle anderen clients senden, nur nicht wieder an sich selbst. For c.client = each client If not c\name$ = name$ WriteByte stream, CLIENT_CHAT WriteString stream, name$ WriteString stream, text$ SendUDPMsg stream, c\ip, c\port Endif Next End Select Endif Until Keyhit(1) Der Server liest dann als erstes dieses Byte und erkennt daran was er machen muss. So ungefähr. Natürlich muss der Client dann auch wieder gewisse dinge senden. Das hab ich aber jetzt mal weggelassen. Beim Client sollte dann auch wieder eine Select Case struktur vorhanden sein die die ID's prüft die der Server sendet und entsprechend darauf reagiert. Hoffe es hilft dir weiter. |
||
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm kenne mich mit types nicht aus rest ist klar danke | ||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Types zeigen hier eigentlich auch nicht den UDP Aufbau ![]() Aber ist ganz simpel, wenn der Server die Message CLIENT_CONNECTED erhält macht er einen neuen Player und speichert Name, IP und Port. Bei CLIENT_DISCONNECTED löscht er diesen player wieder. Bei CLIENT_CHAT geht er alle player durch (ausser den player der die message geschickt hat) und sendet an deren IP und Port der name des spieler der was im chat gesagt hat und den text. |
||
ZAiMoN |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
k danke nun hab ich es ![]() |
||
In Online Games Gilt:
Luck Beats Skill Lag Beats Skill Cheat Beats Skill |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group