Jestem całkiem nowy w kodowaniu Uniksa i chciałbym popracować nad kilkoma prostymi projektami sieciowymi. Znalazłem kilka samouczków, których dokładnie szukam - w szczególności ten: http://www.linuxhowtos.org/C_C++/socket.htm .
Zrozumiałem, jak skompilować pliki serwera i klienta c w pliki wykonywalne i mogę je uruchomić w terminalu w następujący sposób:
open server
open client
ponieważ używam Mac OS X 10.7.5. Mój problem polega na tym, że muszę przekazywać argumenty do tych programów podczas ich inicjowania. Samouczek używa tego kodu:
server 51717
client clientName 51717
ale nie znalazłem sposobu na skopiowanie tego w moim terminalu Mac.
open server --args 51717 //doesn't work
Znalazłem ten post i utworzyłem skrypt jabłkowy z tym kodem
do shell script "open -a /Desktop/server --args 51717"
ale to powoduje wiele błędów. Próbowałem wielu odmian, ale nie udało mi się uruchomić żadnej. Nie mogłem też uruchomić przykładu Chrome z tego postu (nie mam zainstalowanego FF).
Jak przekazać prosty numer portu jako argument do programu, tak jak w samouczku? Czy to łatwiej zrobić na komputerze z systemem Linux? W tej chwili nie mam problemu ze zmianą systemu operacyjnego i byłoby idealnie, gdybym mógł użyć składni „serwer 51717”, której używa samouczek, zamiast tworzyć osobny skrypt uruchamiania dla każdego programu. Szukasz odpowiedzi i porady. Dzięki.
EDYTOWAĆ:
Sprawiłem, że działa poprawnie, ale coś wciąż nie działa poprawnie. Uruchamiam serwer w następujący sposób:
$ ./server 3456
następnie otwórz nowy terminal i uruchom klienta z ograniczonym sukcesem:
$ ./client mClient 3456
ERROR, no such host
$ ./client 127.0.0.1 3456
Please enter the message: //running correctly
//... this also works
$ ./client 127.1 3456
Please enter the message: //running correctly
Mogę uruchomić klienta z pewnymi kombinacjami liczb. Numerów, ale to nie działa dla wszystkich i nie mogę używać żadnych liter. Dlaczego działa tylko jedno z tych rozwiązań?
ROZWIĄZANIE:
$ sudo nano /private/etc/hosts
dodaj 127.0.0.1 mClient
na dole, a następnie naciśnij Ctrl ^ o, aby zapisać
Teraz to działa:
$ ./client mClient 3456