套接字
首先在项目中建三个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
服务器成功接收到客户机的请求内容
版权声明:本文为博主原创文章,未经博主允许不得转载。