nrkmaiden Δημοσ. 10 Νοεμβρίου 2012 Share Δημοσ. 10 Νοεμβρίου 2012 (επεξεργασμένο) Θελω να φτιαξω ενα προγραμμα client -server οπως λεει και ο τιτλος που ο πελατης να στελνει ενα μηνυμα στον server για αρχη, αλλα εχω ενα προβλημα ο server δεν εμφανιζει τιποτα απο αυτο που θα επρεπε να εχει διαβασει απο τον πελατη. code: server: > #include <sys/types.h> #include <sys/socket.h> // vasiki vivliothiki gia xrisi sockets #include <sys/un.h> #include <sys/shm.h> #include <sys/ipc.h> #include <errno.h> //vasiki vivliothiki gia eidos sfalmatwn xrisi sta8era EINTR #include <fcntl.h> #include <unistd.h> #include <sys/wait.h> //xrisi sunartisis waitpid() #include <sys/stat.h> #include <semaphore.h> //vasiki vivliothiki gia semaphore #include <signal.h> //vasiki vivliothiki gia simata #include <stdio.h> //gia eisodo & e3odo dedomenwn #include <stdlib.h> //gia tin swsti xrisi tis exit()/rand()/srand() #include <string.h> //gia xeirismo strings #include <time.h> //vivliothiki gia tin diaxerisi tou xronou #include <errno.h> #include <unistd.h> //orismos tis dieuthinsis pou tha xrisimopoihsoume #define SOCK_PATH "/home/nik/unix.str" //kurios programma server int main() { sem_t *my_sem; //xeirismos semaforou int sd, ns; socklen_t len_address, len_address_2; int shm_id; char ans[4]; int i; for(i=0;i<4;i++){ans[i]=48;} pid_t pid1; struct sockaddr_un serveraddr; if ((sd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { perror("server: error while opening socket, exit..."); exit(1); } serveraddr.sun_family = AF_UNIX; strcpy(serveraddr.sun_path, SOCK_PATH); unlink(SOCK_PATH); int msgacc; len_address = sizeof(serveraddr.sun_family)+strlen(serveraddr.sun_path); if(bind(sd,(struct sockaddr *) &serveraddr,len_address)==-1) { perror("server: error in bind. exit..."); exit(1); } /*dimiourgia mias listas pou apothikeuontai oi aitiseis (mikous 1000) mexri na tis e3upiretisei o server*/ if (listen(sd, 1000) < 0) { perror("server: listen"); exit(1); } msgacc=accept(sd,(struct sockaddr*) &serveraddr,&len_address); if(msgacc==-1){ perror("error on accept check clients adress and length\n");} //atermwn loop gia tin apodoxi/ulopoihsh twn aitisewn apo tous client while(1) { sleep(6); printf("afasfa\n"); ns=read(msgacc,ans,5); if(ns==-1){perror("error read from socket");} printf("%s\n",ans); } return 0;} client: > #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #define SOCK_PATH "/home/nik/unix.str" int main() { int len, s; char ans[4]; printf("hello\n"); struct sockaddr_un saun; if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { perror("client: error opening socket"); exit(1); } // Arxikopoihsh Dieuthunshs---------------------------------------------- saun.sun_family = AF_UNIX; strcpy(saun.sun_path, SOCK_PATH); len = sizeof(saun.sun_family) + strlen(saun.sun_path); int nf; // Prospa8eia sundeshs sto programma eksuphreth(Server) // kai elegxos kai diaxeirish sfalmatos kata th sundesh-------------------------------------------------- nf = connect(s,(struct sockaddr *)&saun, len); if (nf==-1) { perror("client: error during connection"); exit(1); } scanf("%s",ans); if(write(nf,ans,5)==-1) { perror("couldnt write in socket"); exit(1); } printf("%s\n",ans); return 0; } Μπορει καποιος να μου πει που εχω κανει λαθος: Επεξ/σία 11 Νοεμβρίου 2012 από nrkmaiden Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα