本文为大家分享了Java socket字节流传输示例,供大家参考,具体内容如下
服务端server端:
package com.yuan.socket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Created by YUAN on 2016-09-17. */ public class TalkServer4Byte { private ServerSocket server; private int port = 5020; public TalkServer4Byte() { try { server = new ServerSocket(port); } catch (IOException e) { } } public void talk() { System.out.println("监控端口:" + port); Socket socket = null; while (true) { try { // 阻塞等待,每接收到一个请求就创建一个新的连接实例 socket = server.accept(); System.out.println("连接客户端地址:" + socket.getRemoteSocketAddress()); // 装饰流BufferedReader封装输入流(接收客户端的流) BufferedInputStream bis = new BufferedInputStream( socket.getInputStream()); DataInputStream dis = new DataInputStream(bis); byte[] bytes = new byte[1]; // 一次读取一个byte String ret = ""; while (dis.read(bytes) != -1) { ret += bytesToHexString(bytes) + " "; if (dis.available() == 0) { //一个请求 doSomething(ret); } } } catch (IOException e) { System.out.println(e.getMessage()); } finally { try { socket.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } } public static void doSomething(String ret) { System.out.println(ret); } public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } public static String BytesHexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } ret += hex.toUpperCase(); } return ret; } public static void main(String[] args) { TalkServer4Byte server = new TalkServer4Byte(); server.talk(); } }
客户端client代码:
package com.yuan.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; /** * Created by YUAN on 2016-09-17. */ public class TalkClient4Byte { private Socket socket; private SocketAddress address; public TalkClient4Byte() { try { socket = new Socket(); address = new InetSocketAddress("127.0.0.1", 5020); socket.connect(address, 1000); } catch (IOException e) { e.printStackTrace(); } } public void talk() { try { //使用DataInputStream封装输入流 InputStream os = new DataInputStream(System.in); byte [] b = new byte[1]; DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); while (-1 != os.read(b)) { dos.write(b); // 发送给客户端 } dos.flush(); dos.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { } } } public static void main(String[] args) { TalkClient4Byte client = new TalkClient4Byte(); client.talk(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Sanic框架流式传输操作示例,包括了Sanic框架流式传输操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Sanic框架流式传输操作。分享给大家供大家参考,具体如下: 简介 Sanic是一个类似Flask的Python 3.5+ Web服务器,它的写入速度非常快。除了Flask之外,Sanic还支持异步请求处理程序。这意味着你可以使用Python 3.5中新的闪亮的
本文向大家介绍php 输入输出流详解及示例代码,包括了php 输入输出流详解及示例代码的使用技巧和注意事项,需要的朋友参考一下 最近在学习http协议!为了更好理解http协议,看了一下nodejs的http的模块!感觉收获还是挺多的。比如我用http的request发一个请求: 上述代码的意思是发送数据'name=liuzhang&age=28',回调是响应的对象,把服务器响应的数据打印出来!
本文向大家介绍详解JAVA 字节流和字符流,包括了详解JAVA 字节流和字符流的使用技巧和注意事项,需要的朋友参考一下 1、InputStream 和 Reader InputStream 和 Reader 是所有输入流的抽象基类,本身并不能创建实例来执行输入,但它们将成为所有输入流的模板,所以它们的方法是所有输入流都可使用的方法。 在 InputStream 里包含如下三个方法。 int rea
Spring似乎无法将响应直接流式传输到文件,而不将其全部缓冲在内存中。使用较新的Spring 5实现这一点的正确方法是什么? 我看到人们在中找到了一些解决此问题的方法,但我更感兴趣的是使用以正确的方式解决此问题。 有许多使用下载二进制数据的示例,但几乎所有示例都将加载到内存中。
本文向大家介绍java IO 字节流详解及实例代码,包括了java IO 字节流详解及实例代码的使用技巧和注意事项,需要的朋友参考一下 java IO 字节流详解 1. 如何理解输入输出流? 这是我当初在学习Java IO这一块很难理解的一块,输入输出流我们可必须以一个为参照物:我们以内存为参照物,凡是写入内存的我们叫输入流,从内存中写出的我们叫输出流。看下面的示例图 有了这样的一
本文向大家介绍python:socket传输大文件示例,包括了python:socket传输大文件示例的使用技巧和注意事项,需要的朋友参考一下 文件可以传输,但是对比传输前后的文件:socket_test.txt,末尾有一些不一致服务端代码: 客户端代码: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。