Hej, potrzebuje odczytać dane z urządzenia po #modbus #tcp w #python lub #java. Mam urządzenie, które obsługuje modbus RS485 i jeśli wyślę do niego dane w hex:

7E 02 A1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 A3

otrzymam dane, które mnie interesują.
Urządzenie obsługuje również modbus
Cześć, skonfigurowałem sobie router dla dynamicznego adresu dns utworzonego na noip.com w taki sposób, że wpisując port w http://www.portchecktool.com/ i uruchamiając testowy server na podstawie kodu z msdn - TcpServer, dostaję pozytywną odpowiedź (imgur)

Niestety uruchomienie serwera i jednoczesne uruchomienie klienta napisanego na podstawie innego poradnika msdn - Tcp Client nie działa - ponoć klient coś wysłał, ale serwer nie zarejestrował otrzymanie pakietu i nie odsyła informacji zwrotnej. Tcp Client łączy się do publicznego IP, wyświetlonego w portcheckertool, na tym samym porcie (443). Oba programy działają na tym samym komputerze.

Jakieś pomysły co jest nie tak? Kod (tory ( ͡° ͜ʖ ͡°) ) jest zły, czy konfiguracja
#informatyka #programowanie #gniazda #sieci #tcp #miszcz #rtfm

Właśnie odkryłem, że w TCP stanie TIMEWAIT można olać czekanie na zwolnienie zasobów i po prostu wymusić ponowne utworzenie identycznego gniazda ustawiajac flage SOREUSEADDR bez żadnego srania po krzakach i zmieniania systemowych wartosci TcpTimedWaitDelay.
Ku!@#$! Mega odkrycie, bo setki razy widzialem kawłki kodu które czekały na zmiane stanu polaczenie
KomentatorTramwajowy - #informatyka #programowanie #gniazda #sieci #tcp #miszcz #rtfm...

źródło: comment_TNCmVGOyHucxd7ArCLmATZcxXbPCbWkW.jpg

Pobierz
@krzyzakp:

- Cześć, chciałbyś usłyszeć żart o UDP?
- No dawaj
- To wysyłam ci żart o UDP. Potrwa on 10 sekund, zawiera dwie postacie, nie ma miejsca wydarzeń, kończy się puentą
- I jak ci się podobał żart
  • Odpowiedz
Mógłbym tutaj zrobić długi wstęp o tym i o tamtym, ale przejdę od razu do rzeczy.
Ogarnąłem podstawy socketów w #java. Napisałem jakieś tam 2 "programiki" z których jeden pełni rolę serwera i zapisuje do pliku wszystko to, co dostanie z tego drugiego. No niby ok, działa.
Ale chciałbym dołożyć więcej clientów, których wysłane dane byłyby zapisywane do pliku.
Podpowie ktoś jak się za to zabrać?
Myślałem nad tym, żeby przy każdym nowym zaakceptowanym połączeniu dokładać kolejny, identyczny wątek, ale pojawia się problem wtedy z obsługą jednego pliku przez kilka różnych metod no i jeszcze obsługa portu. Chciałbym żeby wszystko działało na tym samym porcie (bo niby skąd trzeci client miałby wiedzieć, że działa na port+3) i tutaj też nie bardzo to widzę żeby dwie metody ciągnęły to samo.
Druga opcja to lista/tablica zaakceptowanych połączeń i w każdym obiegu pętli iterowanie po nich i zbieranie danych i dopisywanie do pliku i tak w kółko. No, niby wykonalne, ale wydaje mi się, że rozwiązanie możeby i przeszło ale ze 20 lat temu. No i nie wydaje mi się to szczególnie wydajne oraz przede wszystkim
@Wyrewolwerowanyrewolwer: nie wiem jak to sprawdzi się w takiej sytuacji, ale pisałem program który zapisywał dane do pliku jak wchodzili klienci na stronę i żeby żadnych informacji nie stracić faktycznie wystarczyło oznaczyć funkcje jako synchronized
  • Odpowiedz
@mckeay The sad thing about IPv6 jokes is that almost no one understands them and no one is using them yet.
@dildog What's up with the jokes... Give it a REST, guys...
@ChrisJohnRiley: The worst thing about #protolol is that you get the broadcast even if you really don't give a shit!
@mdreid: The best thing about proprietary protocol jokes is REDACTED.
@maradydd: The bad thing about Turing machine jokes is you never can tell when they're over #protolol
@
#sieci'owe Mirki, mam taką strukturę:
Komputer - Serwer - Wiele urządzeń końcowych

Komputer ma się komunikować z urządzeniami końcowymi (wysyłanie i odbieranie wielu danych na wiele urządzeń).
Każde z urządzeń ma swój własny adres fizyczny, ale nie mogę nadać im IP.
Komputer komunikuje się z serwerem po Ethernecie, a urządzenia końcowe są wpięte bezpośrednio do serwera łączem
@myszczur: @JakisTakiNick: @Dolan: @mk87so01:
Jakby ktoś był ciekawy to podaję rozwiązanie:
1. W sofcie na kompie można ustawić wysyłanie pod wiele IP.
2. W ustawieniach karty sieciowej ustawiamy statyczny adres IP (w Protokół internetowy w wersji 4) i dodajemy wcześniej zadeklarowane w zaawansowanych. Czyli mamy X adresów IP do których informacje docierają po jednym porcie TCP.
3. W linii komend mapujemy źródłowe IP (zadeklarowane wcześniej) i ten jeden port TCP na adres IP serwera i różne porty TCP.
4. W serwerze
  • Odpowiedz
À propos tego suchara – to nie jest jego pełna wersja. Oto ona:

– Cześć, chciałbym usłysześ żart o TCP.

– Cześć, chciałbyś usłyszeć żart o TCP?

Podrzuci ktoś jakiś program do łączenia przez TCP na danym porcie i wysłania jakichś danych na linuksa? Klasyczny klient TCP. :P Wpisujemy IP, port i dane. Najlepiej żebym znalazł go jeszcze w repo Ubuntu. :D

#linux #tcp