Dart的套接字与web套接字

释放双眼,带上耳机,听听看~!

套接字

首先在项目中建三个dart文件,如下图

main.dart中的代码如下


1
2
3
4
5
6
7
8
9
10
11
12
13
1import 'dart:io';
2import 'dart:convert';
3
4main(List<String> arguments) {
5  //绑定地址和端口,获取套接字,监听每个连接
6  ServerSocket.bind('127.0.0.1', 8089).then((serverSocket) {
7    print('开始监听');
8    serverSocket.listen((socket) {
9      socket.transform(UTF8.decoder).listen(print);
10    });
11  });
12}
13

Socket-1.dart中的代码如下


1
2
3
4
5
6
7
8
9
10
11
1import 'dart:io';
2
3main(List<String> arguments) {
4  //创建一个Socket连接到指定地址与端口
5  Socket.connect('127.0.0.1', 8089).then((socket) {
6    //输出socket运行时的类型
7    print(socket.runtimeType);
8    socket.write('Hello, World!');
9  });
10}
11

Socket-2.dart中的代码如下


1
2
3
4
5
6
7
8
9
10
11
1import 'dart:io';
2
3main(List<String> arguments) {
4  //创建一个Socket连接到指定地址与端口
5  Socket.connect('127.0.0.1', 8089).then((socket) {
6    //输出socket运行时的类型
7    print(socket.runtimeType);
8    socket.write('Hello, Dart!');
9  });
10}
11

首先,运行main.dart,看看效果

已经开始监听了,再访问本机地址,看看控制台的输出

控制台输出了监听到的访问信息,说明监听是成功的,然后分别运行Socket-1.dart和Socket-2.dart

服务器成功接收到客户机的请求内容

Web套接字

重新编写前面三个文件的代码
main.dart中的代码如下


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1import 'dart:io';
2import 'dart:async';
3
4handleMsg(msg) {
5  print('收到信息:$msg');
6}
7
8main(List<String> arguments) {
9  runZoned(() {
10    HttpServer.bind('127.0.0.1', 8089).then((server) {
11      server.listen((HttpRequest req) {
12        if (req.uri.path == '/ws') {
13          //把普通的HTTP请求升级成WebSocket请求
14          WebSocketTransformer.upgrade(req).then((socket) {
15            socket.listen(handleMsg);
16          });
17        }
18      });
19    });
20  },
21  onError: (e) => print("出现一个错误!"));
22}
23

Socket-1.dart中的代码如下


1
2
3
4
5
6
7
8
9
1import 'dart:io';
2
3main(List<String> arguments) {
4  //创建一个WebSocket连接,URL必须使用ws或wss
5  WebSocket.connect('ws://127.0.0.1:8089/ws').then((socket) {
6    socket.add('你好!');
7  });
8}
9

Socket-2.dart中的代码如下


1
2
3
4
5
6
7
8
9
1import 'dart:io';
2
3main(List<String> arguments) {
4  //创建一个WebSocket连接,URL必须使用ws或wss
5  WebSocket.connect('ws://127.0.0.1:8089/ws').then((socket) {
6    socket.add('你也好呀!');
7  });
8}
9

首先,运行main.dart,看看效果

虽然没什么输出,但是服务器已经运行起来了,然后分别运行Socket-1.dart和Socket-2.dart

服务器成功接收到客户机的请求内容

版权声明:本文为博主原创文章,未经博主允许不得转载。

给TA打赏
共{{data.count}}人
人已打赏
安全技术

c++ list, vector, map, set 区别与用法比较

2022-1-11 12:36:11

安全经验

Jenkins安装

2021-10-11 16:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索