Merulo Temat założony przez niniejszego użytkownika |
» 2016-02-05 20:30:10 Taki limit czasu otrzymuje przy braku limitu. A tak naprawdę, obecnie nie ma reszty kodu: int main() { sf::Time Timeout = sf::milliseconds( 300 ); sf::TcpSocket socket; string IP; cout << "Podaj IP" << endl; cin >> IP; socket.connect( IP, 1234, Timeout ); cout << socket.isBlocking() << endl;
Oraz int main() { sf::TcpListener listener; listener.listen( 1234 ); sf::TcpSocket client; listener.accept( client ); cout << "Polaczenie utworzone" << endl;
socket.isBlocking() zwraca wartość 1. Nawet przy ustawieniu socketu na non-blocking problem wciąż istnieje. |
|
jankowalski25 |
» 2016-02-06 13:11:52 Bez serwera (nie udało się połączyć) 1036ms Z serwerem 0ms |
Jeśli najpierw uruchamiasz serwer, to działa, a jak pierwszy będzie klient, to po około sekundzie masz przekroczenie limitu czasu? Jeśli tak, to nie możesz dać oczekiwania dłuższego od tego, co daje brak limitu czasu. There's an optional third argument, a time out value. If set, and the connection attempt doesn't succeed before the time out is over, the function returns an error. If not specified, the default operating system time out is used. |
Czas uzyskiwany przy braku limitu jest zależny od systemu (podaj, z czego korzystasz). Możliwe, że potrzebne będą uprawnienia administracyjne, aby zmienić niektóre ustawienia. //edit: Problem jest taki że Time::Zero jest domyślnie za długie |
Jedna sekunda to za długo? |
|
Merulo Temat założony przez niniejszego użytkownika |
» 2016-02-06 15:14:31 Po pierwsze, od początku mówię że domyślny czas jest za długi. Tak. 1s to za długo dla mojego kodu. Gdyby 1s nie była za długa, to nie byłoby tego tematu. Po drugie, aplikacja będzie stosowana na wielu komputerach (tak zwykle mają programy w których używane są sockety). Zmiana w moich ustawieniach systemowych NIE przełoży się na zmianę ustawień na innych urządzeniach. A po trzecie, nigdzie w dokumentacji SFML nie widziałem informacji że czas połączenia się nie może być dłuższy niż domyślny (jeżeli się mylę, proszę o link). Dodatkowo nad Twoim postem jest wyraźnie napisane że używam 300 ms. Taki czas mi jest potrzebny(około). A w pierwszym poście jest ustawiona jedna sekunda. Czyli niewiele mniej niż domyślny.
Dlatego chcę tak bardzo skorzystać z opcji jaką zacytowałeś z dokumentacji. Niestety, jak można się domyślić, mam z nią problem. Gdy używam 3 argumentów, funkcja nie spełnia swoich zadań czyli nie łączy. Mimo że dokładnie ten sam kod, ta sama funkcja z dwoma argumentami działa.
|
|
jankowalski25 |
» 2016-02-06 18:16:26 Dlaczego chcesz koniecznie nawiązać połączenie w ciągu 300 milisekund? Przecież wystarczy, że system operacyjny będzie musiał obsłużyć jakiś proces o wyższym priorytecie i wtedy Twój program zostanie na chwilę wstrzymany. I dlaczego nie możesz wykonać kilku prób nawiązania połączenia? Musi się udać za pierwszym razem i musisz zdążyć w ciągu 300 milisekund? Co chcesz zrobić? Może da się osiągnąć główny cel bez takich ograniczeń co do nawiązywania połączenia? |
|
Merulo Temat założony przez niniejszego użytkownika |
» 2016-02-06 19:16:23 Nie chce koniecznie nawiązać połączenia w ciągu 300ms. Chcę maksymalnie próbować przez przykładowo 300ms się połączyć, następnie przejść dalej w kodzie. Potrzebuję stworzyć program który wyśle szybko stosunkowo krótkie wiadomości na różne IP. Problem w tym, że nie znam tych IP(bo będzie działał na różnych sieciach). Dodatkowo, nie wszystkie komputery z danej sieci mogą być włączone.
Więc zakładając że w jednej sieci są 254 adresów IP (192.168.1.XXX) To czas wykonania programu zajmie około 254s (zakładając że IP jest jednym z ostatnich). Dlatego czas 1s jest za długi. (Bo najpierw sprawdzę adres 192.168.1.0, potem o 1 większy itd.)
A że to głównie będą sieci po kablu to maksymalny czas próby nawiązywania połączenia mógłby być nawet 10ms.
|
|
Gibas11 |
» 2016-02-06 19:38:43 Wyślij to po UDP? |
|
Merulo Temat założony przez niniejszego użytkownika |
» 2016-02-06 19:46:14 Nie lube UPD A temat dotyczy nie działające funkcji TCP EDIT Przepraszam, ale po prostu bardziej mi chodzi już o samą funkcję a nie mój program. Po prostu chcę żeby zadziałała. |
|
Gibas11 |
» 2016-02-06 19:53:57 Pchasz się w to zadanie ze złą technologią, UDP sprawdzi się tu dużo lepiej i tyle. Ale proszę, nie lubisz UDP (?) to nie, nie przeszkadzam, dobrze że mnie naprostowałeś co do tematu. |
|
1 « 2 » 3 |