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 ...
随机推荐
- ACM-ICPC 2018 南京赛区网络预赛 J sum (找一个数拆成两个无平方因子的组合数)
题目大意:就是找一个数拆成两个无平方因子的组合数,然后求个前缀和 ; 分析:运用筛法的思想 , 因为有序对是由两个合法的数字组成的,所以只要保证第一个数合法,第二个数也合法就行,找出合法的第二个数 ...
- (转)Linux系统stat指令用法
<Linux系统stat指令用法> 原文:https://www.cnblogs.com/linux-super-meng/p/3812695.html stat指令:文件/文件系统的详 ...
- Sqoop Import数据库时中文乱码解决方案
首先查看数据库参数编码: mysql> show variables like 'character%'; +--------------------------+--------------- ...
- NewStar 信息分发系统设计
目录 NewStar 信息分发系统设计 我想要怎么做 系统流程图 解释和初步的模板展示 NewStar 信息分发系统设计 我们在全世界发布网站本质就是向全世界分发我们的信息给客户/潜在客户,然后希望促 ...
- android 开发DatePickerDialog/TimePickerDialog对话框的实现
AndroidAPI提供了Dialog对话框控件,DatePickerDialog/TimePickerDialog均是AlertDialog的子类,通过DatePickerDialog/TimePi ...
- javascript获取滚动条位置(兼容所有浏览器)
有两种方式来获取浏览器滚动条的位置 第一种:document.documentElement.scrollTop 第二种:$("body").scrollTop() 第一种方式能够 ...
- mybatis批量插入插入数据、批量条件查询
ps:参考文章连接:https://www.cnblogs.com/admol/articles/4248159.html 关于个人的使用经验:先把数据放到bean中,多个的话就全放入list集合,如 ...
- 转:WPF中ListBox的创建和多种绑定用法
先从最容易的开始演示ListBox控件的创建. Adding ListBox Items下面的代码是向ListBox控件中添加多项ListBoxItem集合.XAML代码如下:<ListBox ...
- 重置SQLSERVER表的自增列,让自增列重新计数【转】
很多时候我们需要重置某个表的自增列,让自增列重新从1开始记数.最蠢的方法当然是把该表删掉再重新建表了.其实,还有其它的方法可以重置自增列的值: 方法一:使用TRUNCATE TABLE语句: TRUN ...
- mybatis-映射器的CRUD
设计步骤:model.mapper.dao.service.junit单元测试.log4j日志 项目和之前的一样在此只是创建了test和修改了mapper 1.修改映射 1.1修改接口 package ...