bingo88
PCGH-Community-Veteran(in)
AW: [C] Socket für TCP/UDP Übertragung programmieren
Mir ist grade noch was anderes aufgefallen:
Beim ersten Teil ist size nicht initialisiert (kompilier mal mit dem Argument -Wall, das zeigt alle Warnungen an, u. a. nichtinitialsierte Variablen).
Beim zweiten Teil ist die if-Abfrage falsch. Du kannst in C Strings nicht mit "==" vergleichen. Du musst dafür z. B. die strcmp aus der string.h nutzen
Beim dritten Teil kommt mir das "struct in_addr *s_addr" komisch vor. Das muss sicher "inet_aton(argv[3], &server_ip)" heißen.
Edit: Ah, wurde schon entdeckt ^^
Abgesehen davon, wenn du mit argv arbeitest, solltest du besser argc vorher kontrollieren, ob du überhaupt genügend Argumente hast, beispielsweise
Mir ist grade noch was anderes aufgefallen:
Code:
/* Parameter: UDP/TCP, Client, Server-IPv4-Adresse, Port */
/* Parameter: UDP/TCP, Server, Port */
int main(int argc, char *argv[]) {
[B]int size, port, server_ip;
char *data = (char*)malloc(size * sizeof(char));[/B] [B]/* 1 */[/B]
[B] if (argv[1]=="TCP" && argv[2]=="Client")[/B] { [B]/* 2 */[/B]
server_ip = inet_aton(argv[3], [B]struct in_addr *s_addr[/B]); [B]/* 3 */[/B]
port = atoi(argv[4]);
printf("Please enter message: ");
scanf("%s", &data);
tcp_client(data, port, server_ip);
}
return 0;
}
Beim zweiten Teil ist die if-Abfrage falsch. Du kannst in C Strings nicht mit "==" vergleichen. Du musst dafür z. B. die strcmp aus der string.h nutzen
Code:
if (strcmp(argv[1], "TCP") == 0)
{
/* argv[1] = TCP */
}
Edit: Ah, wurde schon entdeckt ^^
Abgesehen davon, wenn du mit argv arbeitest, solltest du besser argc vorher kontrollieren, ob du überhaupt genügend Argumente hast, beispielsweise
Code:
if (argc < 3)
{
printf("Fehler: Zu wenig Argumente.\n");
return -1; /* exit */
}