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);
}
}
浙公网安备 33010602011771号