Dart的套接字与web套接字

简介: <div class="markdown_views"><h2 id="套接字">套接字</h2><p>首先在项目中建三个dart文件,如下图</p><p><img title="" alt="这里写图片描述" src="http://img.blog.csdn.net/20150619144014658"></p><p>main.dart中的代码如下</p>

套接字

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

这里写图片描述

main.dart中的代码如下

import 'dart:io';
import 'dart:convert';

main(List<String> arguments) {
  //绑定地址和端口,获取套接字,监听每个连接
  ServerSocket.bind('127.0.0.1', 8089).then((serverSocket) {
    print('开始监听');
    serverSocket.listen((socket) {
      socket.transform(UTF8.decoder).listen(print);
    });
  });
}

Socket-1.dart中的代码如下

import 'dart:io';

main(List<String> arguments) {
  //创建一个Socket连接到指定地址与端口
  Socket.connect('127.0.0.1', 8089).then((socket) {
    //输出socket运行时的类型
    print(socket.runtimeType);
    socket.write('Hello, World!');
  });
}

Socket-2.dart中的代码如下

import 'dart:io';

main(List<String> arguments) {
  //创建一个Socket连接到指定地址与端口
  Socket.connect('127.0.0.1', 8089).then((socket) {
    //输出socket运行时的类型
    print(socket.runtimeType);
    socket.write('Hello, Dart!');
  });
}

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

Web套接字

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

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

handleMsg(msg) {
  print('收到信息:$msg');
}

main(List<String> arguments) {
  runZoned(() {
    HttpServer.bind('127.0.0.1', 8089).then((server) {
      server.listen((HttpRequest req) {
        if (req.uri.path == '/ws') {
          //把普通的HTTP请求升级成WebSocket请求
          WebSocketTransformer.upgrade(req).then((socket) {
            socket.listen(handleMsg);
          });
        }
      });
    });
  },
  onError: (e) => print("出现一个错误!"));
}

Socket-1.dart中的代码如下

import 'dart:io';

main(List<String> arguments) {
  //创建一个WebSocket连接,URL必须使用ws或wss
  WebSocket.connect('ws://127.0.0.1:8089/ws').then((socket) {
    socket.add('你好!');
  });
}

Socket-2.dart中的代码如下

import 'dart:io';

main(List<String> arguments) {
  //创建一个WebSocket连接,URL必须使用ws或wss
  WebSocket.connect('ws://127.0.0.1:8089/ws').then((socket) {
    socket.add('你也好呀!');
  });
}

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

这里写图片描述

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

这里写图片描述

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

目录
相关文章
|
Dart JavaScript
带你读《深入浅出Dart》十三、Dart的命令行和Web编程(1)
带你读《深入浅出Dart》十三、Dart的命令行和Web编程(1)
|
Dart JavaScript 前端开发
带你读《深入浅出Dart》十三、Dart的命令行和Web编程(2)
带你读《深入浅出Dart》十三、Dart的命令行和Web编程(2)
|
5月前
|
Dart 小程序 前端开发
WebSocket 解析与应用(包含web前端、服务端、小程序、dart/flutter中的用法)
WebSocket 解析与应用(包含web前端、服务端、小程序、dart/flutter中的用法)
715 0
|
Web App开发 JavaScript 前端开发
Angular JS | Closure | Google Web Toolkit | Dart | Polymer 概要汇集
AngularJS | Closure | Google Web Toolkit | Dart | Polymer GWT https://code.google.com/p/google-web-toolkit/ Google Web Toolkit (GWT) 是一种开源 Java 软件开发框架,可以使不会使用第二种浏览器语言的开发人员编写 Google 地图和 Gmail 等 AJAX 应用程序时更加轻松。
1392 0
|
8天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
46 3
|
1月前
|
数据库 开发者 Python
web应用开发
【9月更文挑战第1天】web应用开发
48 1
|
14天前
|
设计模式 测试技术 持续交付
开发复杂Web应用程序
【10月更文挑战第3天】开发复杂Web应用程序
28 2
|
16天前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
35 3
|
1月前
|
数据可视化 图形学 UED
只需四步,轻松开发三维模型Web应用
为了让用户更方便地应用三维模型,阿里云DataV提供了一套完整的三维模型Web模型开发方案,包括三维模型托管、应用开发、交互开发、应用分发等完整功能。只需69.3元/年,就能体验三维模型Web应用开发功能!
221 8
只需四步,轻松开发三维模型Web应用
|
1月前
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
95 6