Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Anmeldungen zum Forentreffen 2018 sind auf der Anmeldeseite möglich
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

raspi per TCP socket

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Benutzeravatar
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 366
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Kontaktdaten:

raspi per TCP socket

Beitrag von Armin » Mo, 16. Mai 2016 23:08

Hallo zusammen,

ich versuche mit einen Rasperry Pi in Verbindung zu kommen.
Auf dem Raspi habe ich ein kleines C-Programm am Laufen, das einen TCP-Server bereitstellt:

Code: Alles auswählen

void error(const char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char *argv[])
{
     int sockfd, newsockfd, portno;
     socklen_t clilen;
     char buffer[256];
     struct sockaddr_in serv_addr, cli_addr;
     int n;
     if (argc < 2) {
         fprintf(stderr,"ERROR, no port provided\n");
         exit(1);
     }
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     if (sockfd < 0) 
        error("ERROR opening socket");
     bzero((char *) &serv_addr, sizeof(serv_addr));
     portno = atoi(argv[1]);
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons(portno);
     if (bind(sockfd, (struct sockaddr *) &serv_addr,
              sizeof(serv_addr)) < 0) 
              error("ERROR on binding");
     listen(sockfd,5);
     clilen = sizeof(cli_addr);
     newsockfd = accept(sockfd, 
                 (struct sockaddr *) &cli_addr, 
                 &clilen);
     if (newsockfd < 0) 
          error("ERROR on accept");
     bzero(buffer,256);
     n = read(newsockfd,buffer,255);
     if (n < 0) error("ERROR reading from socket");
     printf("Here is the message: %s\n",buffer);
     n = write(newsockfd,"I got your message",18);
     if (n < 0) error("ERROR writing to socket");
     close(newsockfd);
     close(sockfd);
     return 0; 
} 

per ASINET
nSocket := SocketOpen( SOCK_STREAM, cServer, nPort, @nError )

will ich diesen Socket öffnen...
Es kommt immer Fehler 11004

Zum Test habe ich auf meinem Rechner auch Castalia Socket Tester installiert.
Wenn ich dort z.B. Port 1024 und die IP-Adresse 192.168.0.187 eingebe, dann sagt das Programm "Connected to IP = 192.168.0.187 on server port #1024"

Ich habe bisher wenig Erfahrungen mit socket-Programmierung.
Mache ich grundlegend etwas falsch - oder hat jemand eine Idee?
Den Port 1024 habe ich in der Firewall freigegeben (habe auch mit abgeschalteter Firewall getestet).

Grüße, Armin

Benutzeravatar
andreas
Foren-Moderator
Foren-Moderator
Beiträge: 1645
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Kontaktdaten:

Re: raspi per TCP socket

Beitrag von andreas » Fr, 27. Mai 2016 10:47

Hallo Armin,

das, was ich im Internet über den Fehler gefunden habe, deutet darauf hin, dass die Adresse ungültig ist bzw. nicht gefunden werden kann. https://msdn.microsoft.com/de-de/librar ... 85%29.aspx
1. Der angeforderte Name ist gültig und wurde in der Datenbank des Name-Servers gefunden. Er verfügt jedoch nicht über eine richtig zugeordnete IP-Adresse.
2. Der angegebene Host ist unbekannt und kann nicht gefunden werden. Der von Ihnen angegebene Servername ist kein offizieller Name oder Alias. Bitte überprüfen Sie daher, ob Ihr DNS-Server korrekt konfiguriert ist.
Gruß,

Andreas
VIP der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e. V.

Antworten