Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinSock] zwalnianie portu

Ostatnio zmodyfikowano 2010-06-10 00:00
Autor Wiadomość
DejaVu
» 2010-06-08 11:59:53
Robienie komunikacji TCP to nie taka prosta sprawa :)

To chyba Ci pomoże:
http://firsthost.nazwa.pl/wordpress/2008/01/17 /winsock-tutorial-4-select/

W każdym razie do komunikacji z kilkoma klientami powinieneś wykorzystać funkcję fd_set.

/edit:
Daję jeszcze spis treści do kursu angielskiego:
http://beej.us/guide/bgnet/output/html/multipage/index.html
Dawniej z tego kursu się uczyłem (no i jeszcze korzystałem z opisów funkcji na MSDN'ie).
P-17777
ison
Temat założony przez niniejszego użytkownika
» 2010-06-08 15:46:20
nie wiem co to jest komunikacja TCP ale ja już mam wszystko napisane. Polega na tym że na komputerze stawiamy server i w zależności od ilości klientów uruchamia on inny program który obsługuje danego klienta. Wszystkie clienty najpierw łączą się z master serverem ze znanym portem, i potem dostają odpowiedź o wolnym porcie na którym mogą przesyłać dane. Problem leży w tym że połączyć się z master serverem nie moze więcej niż 1 osoba gdyż dany port jest już zajęty.

Ważne: NIE chodzi mi o łączenie NARAZ na jednym porcie kilku osób tylko o to abym po połączeniu z klientem numer 1 mógł zamknąć tego clienta i nasłuchiwać innego na tym samym porcie.

tutaj obrazek przedstawiający działanie:
http://img514.imageshack.us/img514/2293/serverk.jpg

ale dziękuję za link, poczytam może rozwiążę ten problem w prostszy sposób (chociaż zwalnianie portu bez zamykania programu by mi się i tak przydało)
P-17779
DejaVu
» 2010-06-09 00:18:03
Żadna aplikacja nie otwiera N portów bo architekt miał taką wizję. Na jednym porcie można przyjmować K klientów więc po co otwierać ich więcej niż jest to konieczne? Szanuj zasoby komputera i wykorzystuj technologię którą masz do dyspozycji w 100%, a nie prowizorycznie.

/edit:
Innymi słowy: zanim zaczniesz twierdzić, że czegoś się nie da - zapoznaj się dobrze z tematem.

/edit2:
A jeśli uważasz się za dobrego programistę to odpowiedz sobie na pytanie czy jesteś w stanie napisać system operacyjny - jeżeli nie to pomyśl sobie: ktoś to zrobił, więc głupi nie był i z pewnością miał większą wiedzę niż Ty.

Architektem aplikacji czy też biblioteki nie zostaje byle kto... ja nie jestem żadnym architektem choć chciałbym być i pewnie by ten cel osiągnąć prędzej założę własną działalność gospodarczą aniżeli uda mi się zdobyć takie stanowisko w firmie, bo życie to jeden wielki układ i jedyne czego firmy szukają to taniej siły roboczej, a stanowiska kierownicze są obsadzone zapewne przez znajomych lub takich co siedzieli XX lat w firmie.
P-17794
ison
Temat założony przez niniejszego użytkownika
» 2010-06-09 07:08:44
ale czy ja gdziekolwiek napisałem że znam się lepiej od programistów microsoftu? :p
czy ja gdziekolwiek napisałem że nie da się na jednym porcie łączyć z kilkoma klientami naraz? Mi chodzi tylko o to że metodą bind nie da się połączyć z więcej niż 1 klientem na tym samym porcie, a nie że w ogóle się nie da. I to jest fakt. Nie mówię że to jest źle.
Zwyczajnie chciałem się tylko zapytać czy jest możliwe tą metodą da się tak zrobić. Wcale nie piszę że znam się lepiej i nie oskarżam architektów. Zdaje sobie sprawę że są inne metody aby osiągnąć ten cel.
P-17795
DejaVu
» 2010-06-09 11:05:03
1) bind to nie metoda :)
2) bind to nie funkcja do przyjmowania K klientów, tylko do skojarzenia socketa z portem.
3) http://msdn.microsoft.com/en-us/library/ms737526(VS.85).aspx

PS. Proponuję poczytać dokładnie do czego jaka funkcja służy ;) - będzie łatwiej zrobić to co chcesz.
P-17797
ison
Temat założony przez niniejszego użytkownika
» 2010-06-09 15:28:58
problem leży po tej stronie że nadal chyba pan nie rozumie o co mi chodzi
1) metoda w sensie że w języku polskim a nie informatycznym, np. metoda zjedzenia kurczaka
2) pisałem już milion razy, ja NIE CHCE przyjmować K klientów w tym samym momencie. Ja chcę stworzyć socket przyjącć klienta i wywalić CAŁKOWICIE całkiem całkiem całkiem bez zamykania programu żeby nie zajmował portu. gdyż funkcja closesocket nie odblokowuje portu.
3) dziękuję za link, jednak wolałbym gdybym mógł zobaczyć gotowy kod servera z porozumiewaniem się z kilkoma klientami ;) (oczywiście jeśli istnieje taka możliwość)
P-17798
DejaVu
» 2010-06-09 16:15:47
To Ty nie rozumiesz zagadnienia komunikacji serwer/klient. Port się otwiera i pozostaje otwarty. Na nim klient się łączy i przesyła dane. Komunikacja może nastąpić tylko gdy port jest otwarty i zbindowany do gniazda. Dałem Ci już przykład do serwera obsługującego K klientów na jednym porcie. Tych K klientów nie trzeba obsługiwać jednocześnie - oni mogą się pojawiać z czasem i każdego klienta można z osobna rozłączać.
P-17803
ison
Temat założony przez niniejszego użytkownika
» 2010-06-09 16:21:36

To Ty nie rozumiesz zagadnienia komunikacji serwer/klient. Port się otwiera i pozostaje otwarty. Na nim klient się łączy i przesyła dane.

czyli wg pana po zamknięciu programu który ma zbindowany socket na porcie X, ten port jest cały czas zajęty?


Komunikacja może nastąpić tylko gdy port jest otwarty i zbindowany do gniazda.
a czy ja gdziekolwiek napisałem że tak nie jest?
P-17807
1 2 3 « 4 » 5 6
Poprzednia strona Strona 4 z 6 Następna strona