Dart的套接字与web套接字
套接字
首先在项目中建三个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或wssWebSocket.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或wssWebSocket.connect('ws://127.0.0.1:8089/ws').then((socket) {socket.add('你也好呀!');});
}
首先,运行main.dart,看看效果
虽然没什么输出,但是服务器已经运行起来了,然后分别运行Socket-1.dart和Socket-2.dart
服务器成功接收到客户机的请求内容
Dart的套接字与web套接字相关推荐
- stomp java客户端_Stomp-Spring服务器端的Web套接字Java客户端
stomp java客户端 问题: 为了分析问题,我不得不编写一个简单的Java Web套接字客户端站点代码,并使用基于stomp的Web套接字代理连接到服务器端基于Spring的应用程序. 解决方案 ...
- Stomp-Spring服务器端的Web套接字Java客户端
问题: 为了分析问题,我不得不编写一个简单的Java Web套接字客户端站点代码,并使用基于stomp的Web套接字代理连接到服务器端基于Spring的应用程序. 解决方案: pom.xml < ...
- Java套接字程序_java – 通过Web套接字进行应用程序到应用程序的通信
我通过Web套接字(没有浏览器工作)获得应用程序到应用程序的通信有些麻烦.由于这似乎不是最常用的网络套接字应用程序,我想知道是否有人有这方面的经验. 为什么我要使用网络套接字? 由于防火墙问题,我需要 ...
- python套接字编程_Python套接字编程(1)——socket模块与套接字编程
在Python网络编程系列,我们主要学习以下内容: 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块 ...
- 流式套接字(SOCK_STREAM),数据报套接字 (SOCK_DGRAM) 的比较
1.流式套接字 使用这种套接字时,数据在客户端是顺序发送的,并且到达的顺序是一致的.比如你在客户端先发送1,再发送2,那么在服务器端的接收顺序是先接收到1,再接收到2,流式套接字是可靠的,是面向连接的 ...
- 手把手教你WEB套打程序开发
WEB套打可选方案不多,理想的更少,利用免费控件Lodop+JavaScript实现精确套打,算是较为经典的选择.这种方案其实比较简单,利用一个htm文件就可以实现模板设计过程,几乎是"空手 ...
- 【JavaEE】网络编程之TCP套接字、UDP套接字
目录 1.网络编程的基本概念 1.1为什么需要网络编程 1.2服务端与用户端 1.3网络编程五元组 1.4套接字的概念 2.UDP套接字编程 2.1UDP套接字的特点 2.2UDP套接字API 2.2 ...
- (分享)基于JQuery的WEB套打设计器jatoolsPrinter2.0
开发web套打应用时,如快递单打印,一般要经过以下步骤: 1. 扫描快递单据,保存成一个图片文件 2. 将底图作成<img> 3. 在<img>上放置打印项,试着打印到打印机, ...
- 32套无碳小车重力势能小车8字型S型工程训练大赛sw建模3D图纸设计
32套无碳小车重力势能小车8字型S型工程训练大赛sw建模3D图纸设计 tao <img src="https://img-blog.csdnimg.cn/29ee6d5125d4423 ...
最新文章
- 构造代码块,初始代码块和静态代码块的执行顺序
- mega_[MEGA DEAL]终极Android N开发套件(90%折扣)
- 【最简单的例子】Editor.md的初步使用
- matlab图像去毛刺_信号去毛刺,去零漂
- Web.Config文件配置之数据库连接配置
- 开源贡献 计算_学生如何开始为开源软件做贡献
- 集成Ehcache用来缓存表以后,怎么设置缓存刷新时间
- php多图片上传程序2.4.3,php多文件上传 多图片上传程序代码
- 强制更新LYNC客户端的地址簿
- 表情识别(六)--局部特征学习和Handcrafted特征结合
- CS224N笔记(十):问答系统
- Mysql查看执行计划-explain
- C语言问题,if条件里面按位取反
- linux ARM64 中断底层处理代码分析
- Anaconda3\Scripts\activate.bat 不是内部或外部命令,也不是可运行的程序的问题处理方法
- CAD制图怎么使用CAD修剪命令呢?
- 【奇葩问题】每次打开excel文件都会出现两个窗口,一个是空白的sheet1,另一个是自己的文档
- 结对项目之需求分析与原型设计(导师选择)
- [有感而发]与刺客独行
- 试题 算法训练 盾神与离散老师2
热门文章
- https配置的后序以及网页定位的测试
- Java 1.4 大数值问题
- 【Cite 1.7K】Accurate, Large Minibatch SGD: Training ImageNet in 1 Hour
- 《深度学习笔记》——防止梯度消失的学习笔记
- Python——用assert语句来确保参数符合当前程序的要求
- 手动搭建latex公式渲染服务器
- ESP32开发 CMakeLists包含同级目录.h文件,error: gpioX.h: No such file or directory
- 算法不会,尚能饭否之队列
- 敏捷开发一千零一问系列之十八:长期受制于强势客户怎么办?(下)
- 培养创造性思维20个技巧