UDP belibig lange Nachricht senden
-
Hallo Zusammen,
Angenommen ich habe eine Nachricht LOGIN.
Diese setzt sich zusammen aus:
- ID (1 Byte)
- Username (beliebig viele Byte)
- Chatraum (beliebig viele Byte)Diese Nachricht will ich per sendto (UDP) an einen Server schicken.
Wie stell ich das an?Ich weiß wies funktioniert wenn ich folgendes versende:
char msg[64] = "hallo Welt"
Dies zu versenden ist kein Problem. Nur LOGIN kann ja beliebig lang sein.
Und wie geh ich mit LOGIN auf der Serverseite um?Liebe Grüße
-
- ID (1 Byte)
- Usernamenlänge (4 Byte)
- Username (beliebig viele Byte)
- Textlänge (16 Byte)
- Chatraum (beliebig viele Byte)
-
@Textlänge: Übertreib mal nicht. 1 Byte für die Länge des Usernamens und 2 Byte für die Länge der Nachricht reicht i.d.R. vollkommen aus.
-
314159265358979 schrieb:
@Textlänge: Übertreib mal nicht. 1 Byte für die Länge des Usernamens und 2 Byte für die Länge der Nachricht reicht i.d.R. vollkommen aus.
Ich wollte nur ein "Der Text der versendet werden kann ist ja nicht beliebig lang" als Antwort von uni_cu vermeiden.
-
Hallo,
mir kommt es nicht auf das Format der nachricht an, sondern wie ich diese umsetze und verschicke.
Gehen wir von meinem Format aus.
id = 1 (unsigned int)
username = "willi" (unsigned char*)
chatraum = "sportchat" (unsigned char*)Ich habe mir irgendwie folgendes gedacht:
void *LOGIN; uint8_t id; id = 1; unsigned char* username = "willi"; unsigned char* chatraum = "sportchat"; LOGIN = malloc(1+strlen(username)+strlen(chatraum)); *(uint8_t*)LOGIN = id; (uint8_t*)LOGIN++; *(char*)LOGIN = username; (char*)LOGIN += strlen(username); *(char*)LOGIN = chatraum; . . . err = sendto(socket_fd,(char*)LOGIN, 1+strlen(username)+strlen(chatraum), 0, (struct sockaddr*) &dest, sizeof(struct sockaddr_in));
Ich hoffe ihr versteht jetzt wo mein Problem ist.
LG