websocket flutter

https://stackoverflow.com/questions/51077233/how-can-i-use-socket-in-flutter-app

 

 

 

import 'dart:io';
import 'dart:async';

Socket socket;

void main() async{
  await Socket.connect("cn.whois-servers.net", 43).then((Socket sock) {
    socket = sock;
    socket.listen(dataHandler,
        onError: errorHandler,
        onDone: doneHandler,
        cancelOnError: false);
  }).catchError((AsyncError e) {
    print("Unable to connect: $e");
  });
  //Connect standard in to the socket
//  stdin.listen((data) => socket.write(new String.fromCharCodes(data).trim() + '\n'));
  socket.write('wuwu.cn\n');
}

void dataHandler(data){
  print('getting data');
  print(new String.fromCharCodes(data).trim());
}

void errorHandler(error, StackTrace trace){
  print(error);
}

void doneHandler(){
  socket.destroy();
}

  

 

 

import 'dart:io';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
import 'dart:convert';


main()=>runApp(MaterialApp(home: MyApp(sock: SOCK(),),));

class MyApp extends StatelessWidget {
  MyApp({this.sock});
  final SOCK sock;
  TextEditingController _textController = TextEditingController();

  _send(){
    sock.send();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('test'),),
      body: Container(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            StreamBuilder(
              stream: sock.sock,
              builder: (context, snapshot){
                if(snapshot.hasData){
                  return Text('has data');
                } else {
                  return Text('no data');
                }
              },
            ),
            TextField(controller: _textController,),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _send,
      ),
    );
  }
}

class SOCK {
  Socket sock;
  openSock () async{
    sock = await Socket.connect('cn.whois-servers.net', 43);
    sock.listen(onData);
    print('connecting');
  }

  send() async {
    print('sending from SOCK');
    await openSock();
    await sock.write('zizi.cn\n');
//    await sock.destroy();
  }

  onData(value){
    print('received');
//    var a = String.fromCharCodes(value);
    var b = utf8.decode(value);
    print(b);
  }
}

  

 

 

posted @ 2019-04-12 08:57  CrossPython  阅读(1296)  评论(0编辑  收藏  举报