Προς το περιεχόμενο

Προβλημα σε client server[SOLVED]


nrkmaiden

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Θελω να φτιαξω ενα προγραμμα 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;
}

 

 

Μπορει καποιος να μου πει που εχω κανει λαθος:

Επεξ/σία από nrkmaiden
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...