socket 收发报文小程序
需要注意,由于是从文件读取,而WINDOWS自带的文本文档程序,亲测对于UTF-8文件会不可见地在文件头多出3个字节。另外回车换行也是不可见字节,需要考虑到。
package com.test.common.socket; import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket; import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; /**
* @author Alive
*/
public class SendTest {
private static final int serverport = 20009; public SendTest() {
} public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException {
SendTest sendTest = new SendTest();
sendTest.sendMsg();
} public void sendMsg() throws IOException, SAXException, ParserConfigurationException {
BufferedReader bufferedReader = null;
PrintWriter pw = null; //文件输入
InputStream fileInputStream = this.getClass().getResourceAsStream("msg.txt");
BufferedInputStream buff = new BufferedInputStream(fileInputStream); try {
InetAddress serveraddr = InetAddress.getLocalHost();
Socket socket = new Socket(serveraddr, 18000);
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream(),true);//true代表即时刷新 System.out.println("buff.available(): "+buff.available());
byte[] data1 = new byte[buff.available()];
buff.read(data1);
byte[] data2 = new byte[data1.length-3];
//去掉UTF-8文件中的前三个字节
System.arraycopy(data1, 3, data2, 0, data2.length); //发送
String str = new String(data1,"UTF-8");
pw.write(str.trim());
pw.flush();
System.out.println("send: "+str.trim()); //接收
StringBuilder sb = new StringBuilder();
String recvStr = null;
while((recvStr = bufferedReader.readLine())!=null)
sb.append(recvStr+"\n");
System.out.println("recv: "+sb.toString()); socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void show(byte[] bytes) {
System.out.print("send: ");
for (int i = 0; i < bytes.length; i++) {
System.out.print(bytes[i]+" ");
}
System.out.println();
}
}
socket 收发报文小程序的更多相关文章
- 答题小程序开发之socket编程 微信小程序答题 直播答题开发 直播弹幕使用web socket编程
最近有一个项目很火,那就是直播答题的,接到公司的这个任务,开发直播答题的聊天室功能.在线的人相互聊天.之前做过类似的,当时都是使用的ajax轮询的,这种非常的耗费服务器.所以这次就开始使用socket ...
- 简单的Linux下的socket通信,小程序,方便以后查看。
首先是我的一个出错提示的头文件<myerr.h>,自从用了根本停不下来啊!!! #ifndef _MYERR_H_ #define _MYERR_H_ #include <stdio ...
- 前端笔记之微信小程序(四)WebSocket&Socket.io&摇一摇案例&地图|地理位置
一.WebSocket概述 http://www.ruanyifeng.com/blog/2017/05/websocket.html Workerman一款开源高性能异步PHP socket即时通讯 ...
- [Socket]Socket聊天小程序
一个简单是Socket聊天小程序,读写操作在不同的线程中.服务器端采用线程池. 1.Server import java.io.IOException; import java.net.ServerS ...
- 微信小程序使用Socket
首先,一个小程序同时只能有一个WebSocket连接,如果当前已经存在一个WebSocket连接,会关闭当前连接,并重新建立一个连接. 其次,如果使用了appID,协议必须是 wss://... 最近 ...
- 微信小程序 使用HMACSHA1和md5为登陆注册报文添加指纹验证签名
对接口请求报文作指纹验证签名相信在开发中经常碰到, 这次在与java后端一起开发小程序时,就碰到需求对登陆注册请求报文添加指纹验证签名来防止信息被修改 先来看下我们与后端定制签名规则 2.4. 签名规 ...
- 小程序 之使用HMACSHA1算法加密报文
首先说说我们前端常用的加密技术, 我们常用的加密技术有:如MD5加密,base64加密 今天要说的是HMACSHA1加密技术 先介绍下什么是SHA1算法, 安全哈希算法(Secure Hash Alg ...
- 小程序后台隐藏后 socket 无法重新连接
小程序后台隐藏后 socket 无法重新连接 连接时 fail 回调函数的事件参数:connectSocket:fail:jsapi has no permission,event=createSoc ...
- 微信小程序:开发之前要知道的三件事
前言 微信之父张小龙在年初的那次演讲中曾表示:"我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情".几个月后,微信正式推出微信应用号(即微信小程序),在互联网中掀起了又 ...
随机推荐
- React项目(一):markdown编辑器
在之前的React官网教程中,提到了用Remarkable为插件的markdown评论框.现在就来正儿八经地用另外一个插件marked.js做一个markdown编辑器吧! 准备工作 或许在做之前,应 ...
- C语言查缺补漏
7.用ucontext实现简单的用户空间协作多线程 转 http://blog.chinaunix.net/uid-26000137-id-3973004.html http://blog.csdn. ...
- showPrompt弹框提示
工作中会有很多的弹框,用来添加模板,用来信息提示,,我现在用的模板有dialog(用来添加数据模板内容),还有一个就是自写的showPrompt用来判断错误或者正确的信息~~ 样子大概就是这样的,, ...
- 每天写点python
1.收集系统信息python小程序 1 #!/usr/bin/env python 2 #A system information gathering script 3 4 import subpro ...
- SQL Server性能计数器收集汇总方案(Reporting Service)
通过收集计数器信息,并将计数器信息汇总为不同粒度存储,以Reporting Service报表服务器显示.以下是计数器收集汇总的基本架构. 笔者需要收集的SQL Server计数器包括:SQL Ser ...
- rpm查询命令摘要
任务 命令 显示软件包的相关信息 rpm -q -i NAME 列出软件包中含有的所有文件 rpm -q -i NAME 列出软件包中含有的配置文件 rpm -q -c NAME 列出软件包中含有的文 ...
- XML基础
什么是XML? XML(Extensible Markup Language)可扩展标记语言,是一种以简单文本格式存储数据的方式. 它最重要的组成部分是XML元素,包含了文档的实际数据. XML的几个 ...
- Sublime Text 3 安装Package Control
原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: ...
- 【转】ORACLE的REDO与UNDO
一.什么是redo?redo:oracle在在线或者归档重做日志文件中的记录的信息,外以出现失败时可以利用这些数据来"重放"事务.每个oracle数据都至少有二个在线重做日志组,每 ...
- NDK 笔记(一)
参考:https://developer.android.com/studio/projects/add-native-code.html#link-gradle 使用Android Studio 2 ...