socket 中使用byte数组或者是字符流传输数据
1、使用byte数组传输
client:
public static void test(){
Socket socket = null;
BufferedReader br = null;
PrintWriter pw = null;
try {
// 客户端socket指定服务器的地址和端口号
socket = new Socket("127.0.0.1", 7890);
System.out.println("Socket=" + socket);
// 向SG186系统发送请求报文
OutputStream stream = socket.getOutputStream();
//pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
String requestmsg = "SG186,nihaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
ByteBuffer byteBuffer = ByteBuffer.allocate(requestmsg.length());
byteBuffer.put(requestmsg.getBytes());
byteBuffer.flip();
System.out.println("byteBuffer:"+byteBuffer);
//pw.println(byteBuffer.array());
stream.write(byteBuffer.array());
stream.flush();
// 读取SG186系统发送的响应报文
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuffer buffer = new StringBuffer();
String str;
while ((str = br.readLine()) != null) {
buffer.append(str);
}
System.out.println("api缴费方法中接收到SG186系统的响应报文是:" + buffer.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
System.out.println("close......");
// br.close();
// pw.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
server段:
public static void test2() {
ServerSocket s = null;
Socket socket = null;
PrintWriter pw = null;
try {
// 设定服务端的端口号
s = new ServerSocket(7890);
System.out.println("ServerSocket Start:" + s);
// 等待请求,此方法会一直阻塞,直到获得请求才往下走
socket = s.accept();
System.out.println("Connection accept socket:" + socket);
// 用于接收客户端发来的请求
InputStream stream = socket.getInputStream();
byte[] bytes =new byte[1024];
stream.read(bytes);//写入byte数组中。再依次读取出来即可。
String str = new String(bytes,0,bytes.length);
System.out.println("服务端接收到客户端发送的请求报文:" + str);
// 用于发送返回信息,可以不需要装饰这么多io流使用缓冲流时发送数据要注意调用.flush()方法
pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
Thread.sleep(1000);
String responseStr = "00061000|白仁路|永新北台|2340905|.51|99361410|140.95|140.95|0|0|0|";
pw.println(responseStr);
pw.flush();
// }
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
System.out.println("Close.....");
try {
pw.close();
socket.close();
s.close();
} catch (Exception e2) {
}
}
socket 中使用byte数组或者是字符流传输数据相关推荐
- java中定义byte数组,浅谈java的byte数组的不同写法
(由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...
- Java18-day09【字节缓冲流、字符流、编码表、字符串与字符流中的编码解码问题、字符流读写数据的方式、字符缓冲流、IO流小结】
视频+资料(工程源码.笔记)[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java ...
- 一文读懂Java中File类、字节流、字符流、转换流
一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...
- 一串字符串转换为ascii_将ASCII字符串(char [])转换为C中的BYTE数组
一串字符串转换为ascii Given an ASCII string (char[]) and we have to convert it into BYTE array (BYTE[]) in C ...
- java 打印byte数组内容_java中打印byte数组
JAVA字节转换 字节(Byte)简称:"B",字位(Bit)简称"b", 1 个字位(Bit)=1 个二进制数, 1 个字节=8 个字位=8 个二进制数, 1 ...
- java byte reader_Java字节流与字符流
九.字节流与字符流 9.1 IO的分类 根据数据的流向分为:输入流和输出流. 输入流 :把数据从其他设备上读取到内存中的流. 输出流 :把数据从内存 中写出到其他设备上的流. 数据的类型分为:字节流和 ...
- 【Java-IO】File、搜索删除剪切、字符集、字符编码、字节流、将内存中的数据写入文件、字符流、缓冲流、Scanner、格式化输出、数据流、对象流、序列化与反序列化、Files工具类
IO 文章目录 IO 简介 File 分隔符.大小写 常用方法 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 字节 ...
- 复习笔记13 字符流与字节流
1 标准输入输出流&转换流&打印流 1.1 标准输入输出流 public static final InputStream in:标准输入流 ,用来读取键盘录入的数据 public s ...
- Byte和byte[]数组
Byte和byte[]数组,"表示一个 8 位无符号整数, 一般为8位二进制数". Byte是计算机最基础的存储单位和最基础的通讯单位. 而所有的类型都是支持由byte[]类型转换 ...
最新文章
- 【web】从数据库读取多条数据到前台
- ActionContext_、ValueStack、Stack_Context关系
- 一款基于jQuery外观优雅带遮罩弹出层对话框
- inavFilter 惯导融合算法
- 在Linux下编写C程序,怎么检查程序是否有内存泄漏?
- 接口和抽象类是否继承了Object
- win7电脑删除文件特别慢怎么办
- PHP5时间相差八小时问题[三种方法]
- 计算机博士后流动站有哪些,全国博士后流动站一览表.docx
- 程序员2线城市月薪25k,父母让他去北京一家16K国企,网友:去啊
- debian 系统配置网易镜像源
- centos7安装bbr_Centos7下,BBR修正版 一键安装与使用
- 如何使诺机亚手机显示中文电话簿
- AD 画PCB 布线时,连线就变绿
- 数模电路基础知识 —— 5. 常见电路符号说明(三极管)
- 用 vs 跑 lvgl 模拟器
- 西工大计算机考研最全的报名和各方向解析,含导师介绍
- 孙溟㠭先生书画艺术《贵妃》
- RK3288 android 5.1 HDMI 喇叭同时输出声音
- 笔试总结——0310华为软笔C++
热门文章
- 矩阵加法减法乘法计算
- 黑客基地攻防特训班教程
- monkey测试入门2--测试步骤、常用参数、常规monkey命令
- 怎么进行免费流程图制作?不妨试试这些软件
- 踩坑,String index out of range: -1,MultipartFile中getOriginalFilename()和getName方法
- java基础知识之FileInputStream流
- android游戏手柄问题
- 【二】2D测量 Metrology——set_metrology_model_param()算子
- 软件工程作业 案例分析
- 手把手教你搭建私有云盘(发车啦)