• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

argument z tablicy argv[]

Object Storage Arubacloud
0 głosów
155 wizyt
pytanie zadane 7 lutego 2016 w C i C++ przez Wilier Bywalec (2,570 p.)

Hej, 

napisałem program klient-serwer, który streamuje tekst przez protokół TCP, (najpierw klient wysyła przez UDP co chce żeby mu wysłano, odstęp czasu między linijkami). Port, na którym oczekuje streamingu jest wpisany na sztywno 

np. server_addr_t.sin_port = htons(4000);

po stronie serwera też jest server_addr_t.sin_port = htons(4000);

Chciałbym jednak żeby przy uruchomieniu programu w argumencie podawać numer portu, na którym klient bedzie oczekiwał streamu. Problem jest taki, że tą informację wysyłam datagramem z resztą danych w tablicy char char send_data[1024]; No i np. jeśli uruchomię program z portem np. 4000 to nie wiem jak pobrać i zapisać wartość 4000 w tablicy char. Problem jest w tym, zę np. 4000 jest w tablicy char rozbite na 4 pola. 4,0,0,0

probowałem w ten sposób, ale to tylko daje mi numery asci poszczególnych pól tablicy, atoi() nie mogę użyć, bo zapisuję argument do tablicy char i wychodzą jakies ujemne głupoty 

send_data[0] = (argv[1][0]);
send_data[1] = (argv[1][1]);
send_data[2] = (argv[1][2]);
send_data[3] = (argv[1][3]);

 

1 odpowiedź

0 głosów
odpowiedź 7 lutego 2016 przez mbabane Szeryf (79,280 p.)
edycja 7 lutego 2016 przez mbabane

argv[]  -  to wskaźnik do tablicy ciągów znakowych, która zawiera argumenty, po jednym dla każdego przekazanego ciągu. argv[0] to nazwa programu. Przykład:

echo hello world

argv[0] zawiera echo - czyli nazwa wywoływanego programu, będzie istnieć nawet wtedy gdy nie podamy żadnych parametrów;
argv[1] zawiera hello
argv[2] zawiera world

Także wydaje mi się, że można to zrobić tak: 

htons( atoi( argv[1] ) ); // o ile nr portu podawany jest jako pierwszy parametr po nazwie programu


Dla uzupełnienia, argc  to liczba argumentów, z którymi program został wywołany.
Dla przykładu echo hello world parametr argc będzie wynosił 3. Jeśli nie ma żadnych dodatkowych parametrów (czyli będzie tylko sama nazwa programu), to argc wynosi 1.
 

komentarz 7 lutego 2016 przez Wilier Bywalec (2,570 p.)
źle mnie zrozumiałeś:) to oczywiście działa pod warunkiem, że chce port wpisać tylko w programie, ktory jest uruchamiany z tym parametrem, (czyli klient)

a teraz tą samą wartość muszę wpisać po stronie serwera, czyli przez gniazdo przesyłam w tablicy char tą wartość i tu jest problem
komentarz 7 lutego 2016 przez mbabane Szeryf (79,280 p.)

aha, no teraz kumam,

moze dodaj jeszcze do tego send_data takie cos:

send_data[4] = '\0'; //znak konca linii

 

komentarz 7 lutego 2016 przez Wilier Bywalec (2,570 p.)
teraz wpadłem na to, że przecież zamiast głupio przesyłąć datagram tablicą charów, mogę zrobić strukturę, w której normalnie będę miał inta :)
komentarz 7 lutego 2016 przez mbabane Szeryf (79,280 p.)
można i tak, ale z charmi tez sie da bez problemu.

Podobne pytania

0 głosów
0 odpowiedzi 366 wizyt
pytanie zadane 24 marca 2018 w C i C++ przez Mateusz Tocha Bywalec (2,560 p.)
0 głosów
1 odpowiedź 417 wizyt

92,624 zapytań

141,482 odpowiedzi

319,824 komentarzy

62,006 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...