SOCKET Programmierung mit C++, Client (Telnet) kann nicht connecten



  • Hallo,
    ich binn so langsam am verzweifen, und zwar folgendes Problem:

    Ich versuche einen Telnet Server zu Programmieren (mit befehle sessions etc) nur leider kann kein client connecten und ich weis ehrlich gesagt nicht warum.
    das dumme ist, das sobald ich irgenwelche variablen deffiniere (bool, int char*) ist mein client nicht mehr in der lage zu connecten. währe wirklich dankbar wenn mir jemand ein paar tips geben könnte warum. danke

    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netinet/tcp.h>
    #include <netdb.h>
    #include <sys/signal.h>
    #include <string.h>
    #include <iostream>
    #include <stdlib.h>
    
    #define MAXPUF 1024
    
    void substr(char* in,char* out, int start, int end) {
    	if (end==0)
    		end=strlen(in);
    	char tmpstr[end-start];
    	strncpy(tmpstr,in + start,end);
    	tmpstr[end]=(char) NULL; //string terminieren (sonnst kommt scheiße bei raus)
    
    	strcpy(out,tmpstr);	
    }
    
    int main() {
    int test;
    int IDMySocket, IDPartnerSocket;
    struct sockaddr_in AdrMySock, AdrPartnerSocket;
    struct servent *Service;
    socklen_t AdrLen;
    
    char Puffer[MAXPUF];
    int MsgLen;
    
    int running;
    running=1;
    
    //############################  
      IDMySocket = socket(AF_INET, SOCK_STREAM, 0);
      AdrMySock.sin_family = AF_INET;
      AdrMySock.sin_addr.s_addr = INADDR_ANY; /* akzept. jeden */
      AdrMySock.sin_port = htons(12345);
      bind(IDMySocket,(struct sockaddr *) &AdrMySock, sizeof(AdrMySock));
      listen(IDMySocket, 5);
    
      do {
        IDPartnerSocket = accept(IDMySocket,(struct sockaddr *) &AdrPartnerSocket, &AdrLen);
        MsgLen = recv(IDPartnerSocket, Puffer, MAXPUF, 0);
    
    	if (strncmp(Puffer,"QUIT",4)==0) {
    		strcpy(Puffer,"Hi\n");
    		MsgLen=strlen(Puffer);
    	} else if (strncmp(Puffer,"PASS",4)==0) {
    		char tmp[MAXPUF];
    		substr(Puffer,tmp,5,0);
    		if (strncmp(tmp,"xxx",strlen("xxx"))==0) {
    			strcpy(Puffer,"Hi Admin\n");
    			MsgLen=strlen(Puffer);
    		}
    	}
    
        send(IDPartnerSocket, Puffer, MsgLen, 0);
        shutdown(IDPartnerSocket,SHUT_RDWR);
      } while(running); /* bis zum St. Nimmerlein */
    }
    


  • Versuchst du mit telnet ohne Port-Angabe zu connecten? Also einfach telnet localhost ? In deinem Code verwendest du jedenfalls den Port 12345, telnet läuft normalerweise auf 23.



  • vielen dank für die rasche antwort, aber nein, ich benutze schon die richtige port angabe

    telnet localhost 12345
    

    daran kann es nicht liegen, wei sonnst noch jamand etwas?



  • devkid@desktop:~$ telnet localhost 12345
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    Connection closed by foreign host.
    

    Also bei mir kann er connecten, auch mehrmals. 😕 Jedoch trennt der nach dem Verbindungsaufbau die Verbindung sofort wieder, wenn du das meinst?



  • fwolle schrieb:

    das dumme ist, das sobald ich irgenwelche variablen deffiniere (bool, int char*) ist mein client nicht mehr in der lage zu connecten.

    also, ich verstehe nicht, was du damit meinst.



  • Genau das ist es ja... und ich weis echt nicht warum. jedesmal wenn ich eine variable hinzufüge dreht das script durch....



  • supertux schrieb:

    fwolle schrieb:

    das dumme ist, das sobald ich irgenwelche variablen deffiniere (bool, int char*) ist mein client nicht mehr in der lage zu connecten.

    also, ich verstehe nicht, was du damit meinst.

    ich meine damit folgendes:
    definiere ich eine variable auserhalb der schleife kann ich nicht connetcten.
    es ist dabei völlig egal welche variable



  • Naja ich habs jezt mit einer statusvariable gemacht, die je nach status geändert wird. es klappt, aber naja


Anmelden zum Antworten