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 ...
随机推荐
- 阿里巴巴Java开发手册_不建议在循环体中使用+进行字符串拼接
18. [推荐]循环体内,字符串的连接方式,使用StringBuilder的append方法进行扩展. 说明:下例中,反编译出的字节码文件显示每次循环都会new出一个StringBuilder对象,然 ...
- python入门之sys模块、shutil模块
sys模块 import sys sys.version 返回python的版本 sys.argv 返回一个以脚本名,和传入的参数作为元素的列表 sys.path 返回一个以当前代码文件路径,pyth ...
- (转)centos7优化内核参数详解
centos7优化内核参数详解 原文:http://blog.csdn.net/xiegh2014/article/details/52132863 cat /etc/sysctl.conf #CTC ...
- PHP中文手册1
1.入门 关于换行 PHP 会在输出时自动删除其结束符 ?>后的一个换行.该功能主要是针对在一个页面中嵌入多段 PHP 代码或者包含了无实质性输出的 PHP 文件而设计,与此同时也造成了一些疑惑 ...
- Python3学习实例上手(1)-----模拟登录认证
要求:输入用户名.密码进行认证,认证成功则欢迎,若输错三次会锁定最后一次输入的用户 知识点归纳:字典操作(items()方法).字符串操作(如strip().split()等).文件读写(for li ...
- Docker:安装部署RabbitMQ
前言 今天原本想讲解SpringBoot集成RabbitMQ的,临近开始写时才发现家里的电脑根本没有安装RabbitMQ呀.这下只好利用已有的阿里云服务器,直接Docker安装一下了,顺道记录下,算是 ...
- ActionListener 监听事件源产生的事件
用户在窗体上对组件进行一定动作,比如鼠标点击,会产生一些相应的事件,如ActionEvents,ChangeEvents,ItemEvents等,来响应用户的鼠标点击行为.通过实现ActionList ...
- 《Head First 设计模式》之策略模式——鸭子行为
策略模式(Strategy Pattern) ——定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. (每个功能的多种实现成为一个算法族,这些算法族被分别封装 ...
- 12个非常不错的javascript类库
Javascript是一个解释性的编程语言.最初作为浏览器的一部份在浏览器中运行,可以和用户交互,并且控制浏览器,异步通讯,修改显示的document.在这篇文章中,我们收集了12款最新的Javasc ...
- tf warning等级
from:http://blog.csdn.net/tsinghuahui/article/details/72938764 tf讨厌的warning 2017-08-03 10:02:52.0990 ...