Problem mit Client in C unter Linux

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Ich habe letztens hier eine Serverapplikation programmiert und hatte das Problem das ich da eine Variable zwischenspeichern musste da ich es sonst ein Problem mti dem Pointer gegeben haette.
Nun....
Mein Server funktioniert,nun und ich dachte das mein Problem damit verschwindet da ich der Ansicht war das das Problem daher ruehrt das auf dem Port auf dem er versucht sich zu verbinden kein Service laeuft(bei spaeterer Betrachtung gaebe das aber eine andere Fehlermeldung).
Wie dem auch sei, ich weiss absolut nicht woran es liegt, da er ja kompiliert aber wenn ich mein Programm starte bricht er mit der Fehermeldung
Working on non-Socket
ab.
Quellcode steht am Ende.
mfg

sweet

#include<stdio.h>/*Standard IO-Functions*/
#include<strings.h>/*for working with bzero*/
#include<sys/socket.h>/*Standard Socket-Functions*/
#include<sys/types.h>/*Information about Datatyps*/
#include<arpa/inet.h>/*basic Internetfuncitons*/
#include<netinet/in.h>/*more Internetfuncitons*/

int main(int argc, char** argv)
{
int verifying;
int connection_number;

/*getting a socket*/


connection_number = socket(PF_INET,SOCK_STREAM,0);

if (connection_number < 0)/*checking wether we have a socket*/
{
printf("No Socket available");
perror("Socket()");
return -1;
}

printf("%d\n",connection_number);


/*getting ready to use the socket*/

struct sockaddr_in connection_data;

struct sockaddr *server;

connection_data.sin_family = AF_INET;
connection_data.sin_port = htonl(7777);

verifying = inet_aton("127.0.0.1",&(connection_data.sin_addr));

if(verifying == 0)
{
printf("Adress is invalid!");
perror("ATON");
return -1;
}

bzero(&(connection_data.sin_zero),sizeof(connection_data.sin_zero));

printf("%d\n",inet_ntoa(connection_data.sin_addr));
server = (struct sockaddr*) &connection_data;

/*using a socket*/

verifying = connect(PF_INET, server , sizeof(*server));

if(verifying=-1)
{
printf("Connection failed!");
perror("CONNECTION");
return -1;
}
return 0;;
}
 
verifying = connect(PF_INET, server , sizeof(*server));

1. Argument muss socke sein


int connect(int s, const struct sockaddr *name, socklen_t namelen);

Er compiliert zwar durch aber zur Laufzeit:
Working on non-Socket
merkt er das es kein valider socket descriptor ist.

*shrugg*

Im uebrigen ist dein code stil ziemlich schwer zu lesen.

Hier findest du ne super Anleitung und hintergrundinfos zum programmieren mit (BSD)sockets. wenn du das durch hast, biste halbwegs fit ;)

http://www.zotteljedi.de/doc/socket-tipps/
 
Vielen dank fuer das Tutorial.
War lange nicht mehr on und muss mich momentan leider auch mit dem Socketprogrammieren etwas zuruecknehmen aber ich werde es mir definitiv anschauen.
mfg

sw33t
 
Zurück
Oben