TCP-Client Problem mit send()



  • Hallo!

    Ich habe einen kleinen Client geschrieben, mit dem man eine Verbindung zu einem Computer herstellen kann und dann mit send() Daten schicken kann. So sollte der Client zumindest funktionieren.

    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <unistd.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <netdb.h>
    
    int main(int argc, char *argv) {
    	int s, port=1, e, f;
    	struct sockaddr_in addr;
    	char buffer[256];
    	char ip[25];
    	char command[1024]="";
    	printf("Enter IP-Address: ");
    	scanf("%s", ip);
    	printf("Enter Port: ");
    	scanf("%d", &port);
    	s = socket(PF_INET, SOCK_STREAM, 0);
    	if (s == -1) {
    		printf("Socket could not be opened!");
    		exit(1);
    	}
    	addr.sin_addr.s_addr = inet_addr(ip); 
    	addr.sin_family = AF_INET;
    	addr.sin_port = htons(port);
    	if (connect(s, (struct sockaddr*) &addr, sizeof(addr)) == -1) {
    		printf ("Could not establish connection on port: %d", port);
    	}
    	while (1) { // Ab hier soll eine Befehlsabfrage stattfinden.
    		printf (">");
    		scanf ("%s", command);
    		if (command == "exit") {
    			printf("Exited.");
    			exit(0);
    		}
    		if (command != "exit") {
    			e = send(s, command, sizeof(command), 0);
    		}
    		if (e != -1) {
    			f = recv(s, buffer, sizeof(buffer)-1, 0);
    			if (f != -1) buffer[f]='\0';
    			printf("%s\n" , buffer);
    		}
    
    	}
    	return 0;
    }
    

    Leider passiert rein gar nichts, wenn ich etwas abschicke und bei der eingabe des Befehls exit (bei dem sich das Programm beenden sollte) passiert auch nichts. Mit Debugger habe ich rausgefunden, dass er nicht erkennt, dass exit eingegeben wurde. Was mache ich falsch? Bin noch ein ziemlicher Anfänger v.A. in Linux-Programmierung.

    Danke für alle Antworten,
    MfG Lord JoneZ.



  • Weil du einfach Zeiger vergleichst. Strings vergleichen geht anders, z.B. mit strcmp 🙂

    Aber Vorsicht, strcmp gibt 0 für Gleichheit zurück!



  • Super hab mir schon gedacht, dass es so ein Anfängerproblem ist.

    Vielen Dank, Lord JoneZ.


Anmelden zum Antworten