Cześć. Chcę się komunikować z innym komputerem przez tcp (udp ogaraniam).
Używam tej klasy https://api.flutter.dev/flutter/dart-io/Socket-class.html do komunikacji.
Problem jest taki że w wiresharku widzę wysyłaną wiadomość ale jest ona retransmitowana i to jest problemem. Wyłączyłem zapory na obu komputerach.
wyświetla mi się błąd Unhandled Exception: SocketException: OS Error: Komputer zdalny odrzucił połączenie sieciowe.
pinguje się z drugim komputerem.
Na docelowym hoście ktoś nasłuchuje w ogóle?
Nasłuchuje czyli ma włączony wireshark ? 192.168.1.13 to ten z do którego wysyłam. Z tego co wkleiłem widać że ta 13 wysyła tylko że na 57063
Nie, czyli jest otwarty socket, który nasłuchuje na wybranym porcie.
https://stackoverflow.com/questions/2333400/what-can-be-the-reasons-of-connection-refused-errors
W przeciwieństwie do UDP, TCP jest protokołem połączeniowym, nie można pchać pakietów w eter i się cieszyć.
Wzrorowałem się na tym. https://stackoverflow.com/questions/54481818/how-to-connect-flutter-app-to-tcp-socket-server import 'dart:io';
import 'dart:convert';
import 'dart:async';
main() async {
Socket socket = await Socket.connect('192.168.1.99', 1024);
print('connected');
// listen to the received data event stream
socket.listen((List<int> event) {
print(utf8.decode(event));
});
// send hello
socket.add(utf8.encode('hello'));
// wait 5 seconds
await Future.delayed(Duration(seconds: 5));
// .. and close the socket
s
Po drugiej stronie ktoś musi czekać na wiadomość, najprościej odpal netcat
w trybie nasłuchiwania, nc -l
(warto żebyś zapoznał się z narzędziem). Albo napisz kod, który odbiera.
Czy w ogóle jest to dobra biblioteka ? Opisują ją tak.
Połączenie TCP między dwoma gniazdami.
Połączenie przez gniazdo łączy lokalne gniazdo z gniazdem zdalnym . Dane, takie jak Uint8List s, są odbierane przez gniazdo lokalne, udostępniane przez interfejs Stream tej klasy i mogą być wysyłane do gniazda zdalnego przez interfejs IOSink tej klasy.
Patrząc na ten link o klasie socket może wiecie co mam zrobić z tą klasą ?
Zrób po drugiej stronie jakieś nc -l -p 1024
i wtedy coś zacznie lecieć. Nie da się używać połączeniowego protokołu bez nawiązania połączenia.