Nowe posty

Autor Wątek: Proste wprowadzenie danych  (Przeczytany 2353 razy)

szakul06

  • Gość
Proste wprowadzenie danych
« dnia: 2012-12-23, 14:47:38 »
Witam
 NIe wiem jak wprowadzic dane aby program zadziałał.
 W main jest
 int main(int argc, char *argv[])
Rozumiem ten kod i wydaje mi sie ze trzeba wprowadzic IP i nie wiem co jeszcze.
 Prosze o pomoc bo problem myśle że  łatwy a ja dopiero zaczynam zabawe z takim programowaniem.
Dziękuje za każdą odpowiedź :)

  APLIKACJA KLIENT/SERWER

KLIENT
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 500

int err(char*s) //funkcja wyświetla błąd systemowy
{
printf("%s\\n",s);
printf("Errno:%d\\n",errno);
fprintf(stderr,"%s\\n",strerror(errno));
exit(-1);
}

int main(int argc, char *argv[])
{
   system("clear");

   int sockfd, dg, dd, wynik,licznik;
   struct sockaddr_in address;
   
   if (argc!=3)
   {
   err("Dane zle");
   }
   
   sockfd = socket(AF_INET, SOCK_STREAM, 0);
   if (sockfd == -1) {
      err("Gniazdo nie zostalo utworzone");
      return -1 ;
   }

   address.sin_family = AF_INET;
   address.sin_addr.s_addr = inet_addr(argv[1]);
   address.sin_port = htons(atoi(argv[2]));
   dg=sizeof(address);
   wynik=connect(sockfd, (struct sockaddr *)&address,dg);
   if(wynik == -1)
   {
   err("wystapił błąd");
   }
   
   char tekst[500];
   printf("Wpisz tekst:\\n");
   fgets(tekst, sizeof(tekst), stdin);
   dd = write(sockfd, tekst, strlen(tekst));
   read(sockfd, tekst, MAXLINE);
   printf("Tekst po odwroceniu\\n%s\\n", tekst);

   close(sockfd);
   exit(0);
}
   SERWER
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXLINE 500


int main()
{
   system("clear");

   int server_sockfd, client_sockfd, server_len, dd, ss;
   unsigned client_len;
   struct sockaddr_in server_address;
   struct sockaddr_in client_address;
   
   server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
   server_address.sin_family = AF_INET;
   server_address.sin_addr.s_addr = htons(INADDR_ANY);
   server_address.sin_port = htons (5555);
   server_len = sizeof(server_address);
   
   dd = bind(server_sockfd, (struct sockaddr *) &server_address, server_len); // Ustawianie trybu pasywnego i czekanie na klienta
   printf("Przypis: %d\\n",dd);
   dd=listen(server_sockfd, 5);
   printf("Nasłuch: %d\\n", dd);

   client_len = sizeof(client_address);
   client_sockfd = accept(server_sockfd, (struct sockaddr *) &client_address, &client_len);
   printf("Gniazdo klienta akceptowane: %d\\n", client_sockfd);
   
   while(1)
   {
   printf(" ", stdout);
   char tekst[500]; // tablica dla testu odebrany
   char ltekst[500]; // tablica dla tekstu odwróconego
   
   int b, d, licz;  
   ss=read(client_sockfd, tekst, MAXLINE); // odebranie tekstu od klienta do odwrócenia

   d = strlen(tekst);

   for(licz = 0; licz < 10; licz++){
      printf(" %c", tekst[licz]);
   }
   printf("wypisano");

   for(b=0; b   {
      printf("'aa'");
      ltekst[b]=tekst[d-b-1];
   }
   for(b=0; b   {
      tekst[b]=ltekst[b];
   }
   
   write(client_sockfd, tekst, d); // wysłanie do klienta tekstu po odwróceniu
   printf("wyslano");
   }
   close(client_sockfd);
   return 0;
}

snajper_8383

  • Gość
Proste wprowadzenie danych
« Odpowiedź #1 dnia: 2012-12-23, 17:35:23 »
Dane wprowadzasz z linii poleceń.
address.sin_addr.s_addr = inet_addr(argv[1]); #tu pierwszy parametr (nie licząc nazwy programu) jest potrzebny
address.sin_port = htons(atoi(argv[2])); # a tu drugi