3

我试图弄清楚如何通过 UDP/TCP 从我的颤振应用程序向我的服务器发送数据,该服务器具有侦听 UDP 和 TCP 的 .net 应用程序。我搜索了一下,发现有一个名为 web_socket_channel 的包,我尝试它与测试服务器 ws://echo.websocket.org 一起工作,但是当我用我的服务器 IP 地址替换 echo.websocket.org 或域名它不起作用,即使我没有收到任何错误,所以我无法弄清楚发生了什么。有什么不对?还是我做错了什么?有人可以帮助我的演示代码:

  WebSocketChannel channel;
  String text = "";
  void sendSocket() {

      String message = "message_text"
       if(message.isNotEmpty)
      channel.sink.add(message);

   }  

  getStreamData() {
    channel.stream.asBroadcastStream().listen((event) {
      if (event != null)
          print(event);
    });
  }

  @override
  void dispose() {
    channel.sink.close();
    super.dispose();
  }

  @override
  void initState() {
    try {
      channel = IOWebSocketChannel.connect(

          'ws://127.0.0.1:8889');

      getStreamData();
      super.initState();
    } catch (e) {
      print(e.toString());
    }
  }


我感谢您的帮助。非常感谢。

4

1 回答 1

0

首先,确保您的服务器正在运行并且可以连接。

对于这个问题,请完成下面提到的所有步骤:

1. Check your server is running and the app is listening to a specific port on which you are sending data
2. Check the server IP address and Port number
3. Make ping from the command prompt using "ping serverName/IP"
4. Make sure you can connect using telnet from command prompt "telnet serverName/IP portNumber"

(如果 telnet 命令不起作用意味着您的 telnet 客户端未安装/启用, 请检查如何启用 telnetClient

第一种解决方案

如果一切正常,那么试试这个插件flutter_socket_plugin或者你可以像@Richard Heap 建议的那样为套接字编写自己的代码。

第二个解决方案

dart 网络套接字编程的优秀博客:参考链接

您还可以将 RawDataGramSocket 用于 UDP 套接字,请参阅此线程

TCP 套接字的 Socket API 访问此线程

于 2020-03-03T15:21:20.990 回答