Hallo, ich habe eine Frage, und zwar versuche ich gerade über ein ad-hoc netzwerk eine Verbindung zwischen zwei Rechnern über Sockets aufzubauen. Also damit ist ein Rechner client und der andere server. Der Server haut hin auf SUSE 11.1. Nur der Client bereitet mir Schwierigkeiten indem er diese Meldung ausspuckt:
./hello 192.168.12.11 80
Socket created!
Speicherzugriffsfehler
Also erstellt er einen Socket und kann aber hat dann ein Problem.
Ich habe das Ganze aus einem Beispiel aus Your definite guide to Linux Network Programming.
Vielleicht erkennt ja einer von Euch auf Anhieb wo der Fehler liegt.. die Bibliotheken sind natürlich eingebunden, und das c-Programm wird fehlerfrei kompiliert.
//Edit (RM): Für Konsolenausgaben/Programmcode CODE-Tags verwenden.
//Edit: Zum zweiten Mal CODE-Tags gesetzt, ab sofort machst Du das dann bitte selbst.
Achja, ich weiß nicht genau welche Adresse ich beim ausführen des Befehls verwenden muss, und welcher Art die zweite Eingabe ist. Deswegen könnte der Fehler also darin begründet sein. Danke RM fürs editieren, das schaffe ich ab jetzt
Zum Zweiten könnte es mit dem localhost 127.0.0.1 zusammenhängen??
Wie Ihr seht bin ich noch nicht sehr weit, aber ich werde es nochmal auf einem anderen Weg versuchen, und zwar habe ich diesen Link gefunden.
TCP Echo Server + Client in C › Forum › ubuntuusers.de
Ich glaube da sind bei mir noch einige generelle Unklarheiten, die ich ersteinmal durch anlesen ausmerzen sollte. Also für hints bin ich auch dankbar.
Und hier auch nochmal die Ausgabe nach kompilieren mit -Wall
gcc socketclient.c -o hello -Wall
socketclient.c: In function ‘main’:
socketclient.c:58: warning: implicit declaration of function ‘inet_addr’
socketclient.c:69: warning: implicit declaration of function ‘close’
socketclient.c:74: warning: implicit declaration of function ‘read’
Danke für die Antworten!
./hello 192.168.12.11 80
Socket created!
Speicherzugriffsfehler
Also erstellt er einen Socket und kann aber hat dann ein Problem.
Ich habe das Ganze aus einem Beispiel aus Your definite guide to Linux Network Programming.
Vielleicht erkennt ja einer von Euch auf Anhieb wo der Fehler liegt.. die Bibliotheken sind natürlich eingebunden, und das c-Programm wird fehlerfrei kompiliert.
Code:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
const char APRESSMESSAGE[] = "Hello - APRESS FROM AND FOR PROFESSIONAL\n";
int main(int argc, char *argv[])
{
int simpleSocket=0;
int simplePort=0;
int returnStatus=0;
char buffer[256] = "";
struct sockaddr_in simpleServer;
if(3 != argc){
fprintf(stderr, "USAGE %s <port>\n", argv[0]);
exit(1);
}
/*creating streaming socket*/
simpleSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(simpleSocket == -1) {
fprintf(stderr, "Could not create Socket!\n");
exit(1);
}
else {
fprintf(stderr, "Socket created!\n");
}
/*retrieve the port number for connecting*/
simplePort=atoi(argv[3]);
/*set up the address structure */
/* use IP adress argument to bind all local addresses */
bzero(&simpleServer, sizeof(simpleServer));
simpleServer.sin_family=AF_INET;
inet_addr(argv[2],&simpleServer.sin_addr.s_addr);
simpleServer.sin_port=htons(simplePort);
/* connect to the address and port with our socket*/
returnStatus=bind(simpleSocket,(struct sockaddr *)&simpleServer,sizeof(simpleServer));
if (returnStatus==0) {
fprintf(stderr,"Connect successful!\n");
}
else {
fprintf(stderr,"Could not connect to address!\n");
close(simpleSocket);
exit(1);
}
/*get the message from the Server*/
returnStatus=read(simpleSocket,buffer,sizeof(buffer));
if(returnStatus > 0 ){
printf ("%d: %s", returnStatus, buffer);
}
else {
fprintf(stderr, "Return Status = %d \n", returnStatus);
}
close(simpleSocket);
return 0;
}
//Edit: Zum zweiten Mal CODE-Tags gesetzt, ab sofort machst Du das dann bitte selbst.
Achja, ich weiß nicht genau welche Adresse ich beim ausführen des Befehls verwenden muss, und welcher Art die zweite Eingabe ist. Deswegen könnte der Fehler also darin begründet sein. Danke RM fürs editieren, das schaffe ich ab jetzt
Zum Zweiten könnte es mit dem localhost 127.0.0.1 zusammenhängen??
Wie Ihr seht bin ich noch nicht sehr weit, aber ich werde es nochmal auf einem anderen Weg versuchen, und zwar habe ich diesen Link gefunden.
TCP Echo Server + Client in C › Forum › ubuntuusers.de
Ich glaube da sind bei mir noch einige generelle Unklarheiten, die ich ersteinmal durch anlesen ausmerzen sollte. Also für hints bin ich auch dankbar.
Und hier auch nochmal die Ausgabe nach kompilieren mit -Wall
gcc socketclient.c -o hello -Wall
socketclient.c: In function ‘main’:
socketclient.c:58: warning: implicit declaration of function ‘inet_addr’
socketclient.c:69: warning: implicit declaration of function ‘close’
socketclient.c:74: warning: implicit declaration of function ‘read’
Danke für die Antworten!