Dart Socket 与Java Socket连接
------------------------------------------------------------- Dart SocketClient--------------------------------------------------------------------------------
import 'dart:io'; import 'dart:async'; import 'dart:convert' show utf8; Socket socket; void main() { Socket.connect("10.10.10.180", 6666).then((Socket sock) { socket = sock; sock.write("这是客户端消息!"); socket.listen(dataHandler, onError: errorHandler, onDone: doneHandler, cancelOnError: false); socket.close(); }).catchError((AsyncError e) { print("无法连接: $e"); }); } //接收报文 void dataHandler(data){ print(utf8.decode(data)); } void errorHandler(error, StackTrace trace){ print(error); } void doneHandler(){ socket.destroy(); }
-------------------------------------------------Java SocketServer------------------------------------------------------------------------
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { /** * Socket服务端 */ public static void main(String[] args) { try { ServerSocket serverSocket=new ServerSocket(6666); System.out.println("服务端已启动,等待客户端连接.."); while (true){ Socket socket=serverSocket.accept();//侦听并接受到此套接字的连接,返回一个Socket对象 new Habdler(socket).start(); } } catch (IOException e) { e.printStackTrace(); } } static class Habdler extends Thread{ Socket socket = null; public Habdler(Socket socket){ this.socket = socket; } @Override public void run() { //根据输入输出流和客户端连接 InputStream inputStream= null;//得到一个输入流,接收客户端传递的信息 BufferedReader bufferedReader= null;//加入缓冲区 OutputStream outputStream= null;//获取一个输出流,向服务端发送信息 PrintWriter printWriter= null;//将输出流包装成打印流 try { inputStream = socket.getInputStream(); InputStreamReader inputStreamReader=new InputStreamReader(inputStream); bufferedReader = new BufferedReader(inputStreamReader); String temp=null; String info=""; while((temp=bufferedReader.readLine())!=null){ info+=temp; System.out.println("服务端接收到客户端信息:"+info+",当前客户端ip为:"+socket.getInetAddress().getHostAddress()); } outputStream = socket.getOutputStream(); printWriter = new PrintWriter(outputStream); printWriter.print("服务器消息"); printWriter.flush(); socket.shutdownOutput();//关闭输出流 // 关闭相对应的资源 printWriter.close(); outputStream.close(); bufferedReader.close(); inputStream.close(); socket.close(); } catch (IOException ex) { ex.printStackTrace(); }finally { // 关闭相对应的资源 printWriter.close(); try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
Dart Socket 与Java Socket连接的更多相关文章
- 【Socket】Java Socket基础编程
Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...
- 【Socket】Java Socket编程基础及深入讲解
Socket是Java网络编程的基础,了解还是有好处的, 这篇文章主要讲解Socket的基础编程.Socket用在哪呢,主要用在进程间,网络间通信.本篇比较长,特别做了个目录: 一.Socket通信基 ...
- Java Socket Timeout 总结
原文出处:囚兔 摘要: Java的网络编程Socket常常用于各种网络工具,比如数据库的jdbc客户端,redis客户端jedis,各种RPC工具java客户端,这其中存在一些参数来配置timeout ...
- Java Socket长连接示例代码
SocketListenerPusher.java代码如下: import java.io.IOException; import java.net.InetSocketAddress; import ...
- JAVA Socket连接服务器时可能抛出的异常
1.UnknownHostException:host(非ip)无法识,就会报该异常,www.google.com.hk这个虽然也ping不通,但是不会报该错,因为他是一个确实存在的域名.他会报Con ...
- JAVA Socket(多个客户同时连接,信息共享) client (java/ruby)
第一步 充分理解Socket 1.什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字" ...
- JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...
- java socket 判断Socket连接失效
要判断socket连接链路是否可用时,不能通过socket.isClosed() 和 socket.isConnected() 方法判断,要通过心跳包 socket.sendUrgentData(0x ...
- .net , java webSocket 连接 Socket.io (1.4.4版本) 问题
.net版Socketio4net类库和java版socket.io-java-client类库 连接socket.io 1.4版本都不行,网上大多是socket.io 0.9版本的,socket.i ...
随机推荐
- html5 替换 历史 记录
history.replaceState({url:"/admin/index"},null,"/admin/index"); url 是 需要替换的路径
- chapter07
// 包和引入// 包也可以像内部类那样嵌套// 包路径不是绝对路径// 包声明链x.y.x并不自动 将中间包x和x.y变成可见// 位于文件顶部不带花括号的包声明在整个文件范围内有效// 包对象可以 ...
- Python package和folder
在Python项目里面的区分,按照如下规定进行: 1.严格区分包和文件夹.包的定义就是包含__init__.py的文件夹. 如果没有__init__.py,那么就是普通的文件夹. 2.导入packag ...
- 嵌入式CISC模型机设计
一. 课程设计的题目和内容 题目:设计一台嵌入式CISC模型计算机 采用定长CPU周期.联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: 任意输入5个整数, ...
- Response.Redirect 打开新窗口的两种方法
一般情况下,Response.Redirect 方法是在服务器端进行转向,因此,除非使用 Response.Write("<script>window.location='htt ...
- centos yum 安装mysql5.7 以及 默认root密码查看
1. 首先更新rpm 从MySQL Yum仓库下载最新的rpm文件:http://dev.mysql.com/downloads/repo/yum/ (需要Oracle帐号以及填写一些使用信息,才能 ...
- window.open()方法详解
, 最基本的弹出窗口代码 window.open('page.html'); 2, 经过设置后的弹出窗口 window.open('page.html', 'newwindow', 'heig ...
- ionic 2 起航 控件的使用 客户列表场景(三)
我们来看看客户列表的搜索控件是怎么工作的吧. 1.打开customer.html <ion-content> <ion-searchbar [(ngModel)]="sea ...
- 《Python高效开发实战》实战演练——开发Django站点1
6.2 实战演练:开发Django站点 用Django开发网站需要遵循Django的一套开发流程.本节通过建立一个消息录入页面演示Django的开发流程及相关技术. 6.12.1 建立项目 在进行D ...
- nginx学习书籍推荐
最好的书是源码 深入理解NGINX" 陶辉著 <实战Nginx...>张宴 <深入理解Nginx:模块开发与架构解析> nginx开发从入门到精通 Nginx HTT ...