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

tcp communication


chex

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

Εχω τους παρακατω κωδικες:

 

client.c

>#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

#define PORT 4000

int main(int argc, char *argv[])
{
  //δηλωσεις......

  char *buffer="Hello UDP\n";

  //αρχικοποιηση το server...

n=connect(com_line,(struct sockaddr*)&server,sizeof(server));
if(n==-1){
perror("NOTCONNECTING");
exit(1);
}
send(com_line,buffer,strlen(buffer),0);
  close(com_line);
  return 0;
}

 

server.c

>#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <netdb.h>
#include <stdio.h>
#include <arpa/inet.h>
#include <error.h>

#define PORTNUM 4000

int main(int argc, char** argv)
{
  char *buf;

com_line = socket(AF_INET, SOCK_STREAM, 0);

//εχω αφαιρεσει τον υπολοιπο κωδικα της, και τις δηλωσεις..

bind(com_line,(struct sockaddr *)&server,serv_len); 

listen(com_line,1);

 

  while(1){
cl=accept(com_line,(struct sockaddr *)&client,&client_len);
if(cl<0){
perror("NOT ACCEPT");
exit(1);
} 

while((  n = recv(cl,buf,strlen(buf),0))>0)
//write(1,buf,n);
//buf[n]='\0';
   printf("%s\n",num);
close(cl);
    }

close(com_line);
  return 0;
}

 

 

Το προβλημα ειναι οτι ο server ενω περιμενει να κανει το accept και λογικα το κανει οταν τρεχει ο client το μηνυμα που θα επρεπε να εμφανιζει δεν τυπωνεται στο stdout. Δεν κανει τιποτα. Ποιο ειναι το προβλημα στη συγκεκριμενη υλοποιηση?? Εχω δοκιμασει με διαφορους τροπους, ακομα και με απλους int αλλα τιποτα. Τι κανω λαθος?

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

Τα buffer του send και receive πρέπει να έχουν το ίδιο μέγεθος για να μην έχεις φαντάσματα. Καλύτερα να το έχεις προκαθορίσει πχ buf[512]. Καλύτερα βέβαια να είχαμε ολόκληρο των κώδικα για να βλέπαμε και τις δηλώσεις. Η num πχ που τυπώνεις δεν παίρνει καμία τιμή όπως φαίνεται.

 

Μελέτησε ένα έτοιμο παράδειγμα για να σε βοηθήσει να καταλάβεις κάποια πράγματα καλύτερα.

 

Για παράδειγμα: link

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

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...