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();
} }
Java socket字节流传输的示例的更多相关文章
- java socket通信-传输文件图片--传输图片
ClientTcpSend.java client发送类 package com.yjf.test; import java.io.DataOutputStream; import java.io ...
- 解决java socket在传输汉字时出现截断导致乱码的问题
解决java socket在传输汉字时出现截断导致乱码的问题 当使用socket进行TCP数据传输时,传输的字符串会编码成字节数组,当采用utf8编码时,数字与字母长度为1个字节,而汉字一般为3个字节 ...
- java socket之传输实体类对象
一.TCP编程 TCP协议是面向连接的.可靠地.有序的,以字节流的方式发送数据.java实现TCP通信依靠2个类:客户端的Socket类和服务器端的ServerSocket类. 基于TCP通信 ...
- Java Socket实战之四:传输压缩对象
转自:http://developer.51cto.com/art/201202/317546.htm 上一篇文章说到了用Java Socket来传输对象,但是在有些情况下比如网络环境不好或者对象比较 ...
- Java Socket实战之三:传输对象
转自:https://i.cnblogs.com/EditPosts.aspx?opt=1 前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Java Socket来传输对象. ...
- 多线程Java Socket编程示例(转)
这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送 ...
- java socket 多线程网络传输多个文件
http://blog.csdn.net/njchenyi/article/details/9072845 java socket 多线程网络传输多个文件 2013-06-10 21:26 3596人 ...
- 多线程Java Socket编程示例
package org.merit.test.socket; import java.io.BufferedReader; import java.io.IOException; import jav ...
- WCF知识点(应用WCF支持原生Socket访问, 原始字节流传输)
最近在做区域医疗中PIX时, 需要让PIX Manager同时支持HL7的V2和V3版本.思路是利用WCF来同时支持V2版本的c/s架构式的消息协议和V3版本WebService的Soap协议. 实 ...
随机推荐
- RNTools
在使用RNTools的自定义功能加载bundle的时候, 记得要把 http:// 加上,否则加载bundle会找不到网络地址.
- C# winfrom中Flash播放使用axShockwaveFlash控件设置透明XP出现白色背景解决办法,仿QQ魔法表情效果
//播放时 图片周围有锯齿白边出现 反锯齿处理暂无解决办法. 如有大神 请给我留言 新Form AllowDrop True 引用using System.IO; 拖1个Button p ...
- session相关----高手请跳过!
session["username"]=null;//Session.Remove("username");的结果是session["username ...
- 使用ionic与cordova(phonegap)进行轻量级app开发前的环境配置与打包安卓apk过程记录
前言 有人说:"如果你恨一个人,就让ta去接触cordova(phonegap)",这是因为这里面的水很深,坑很多,真让人不是一般地发狂.或许有幸运的人儿基本顺顺利利就配置完环境 ...
- javascript 面向对象的继承的实现
JavaScript 中的面向对象的初步认识 上面这篇简单的记录了我对 JS面向对象实现的一点初步认识和了解,下面继续研究JS面向对象,实现继承和多态. 之前的学习我了解到了 :构造函数加属性,原型p ...
- 使用CSS来显示XML
实现效果学号 姓名 班级 课程 教师 表格背景设为绿色,单元格居中显示 学号部分,蓝色字体,16磅大小: 姓名部分红色字体,带有下划线,12磅大小 班级课程名,教师,绿色字体,12磅大小 XML代码: ...
- [hadoop]Cannot create directory /mdrill/tablelist/fact_seller_all_d. Name node is in safe mode.
在执行mdrill创建表的时候报如下异常(蓝色部分为关键): [mdrill@hadoop1101 bin]$ ./bluewhale mdrill create ./create.sql higo ...
- iOS修改截取图片不规范问题
+(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth{ UIImage ...
- php 7 正式发版
php 7 正式发版 php 在 2015年 12月 3 日 正式发布了 php7 以下是php7的新特性 性能是php5.6的2倍 显著的减少了内存的使用 抽象语法书 64位的支持 提高了异常层次 ...
- struts2在result中使用el表达式碰到的问题
<result name="success">/html/portlet/ext/trainingmanagement/download_file.jsp?path=$ ...