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 ...
- 微信小程序:开发之前要知道的三件事
前言 微信之父张小龙在年初的那次演讲中曾表示:"我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情".几个月后,微信正式推出微信应用号(即微信小程序),在互联网中掀起了又 ...
随机推荐
- 异常 Exception
异常:是指在程序运行的过程中发生的一些不正常的时间. 分为受查异常和非受查异常. 受查异常:编译时期出现的异常 除了RuntimeException的异常,必须处理以及throws 非受查异常:运 ...
- QQ远程桌面的使用
腾讯QQ怎样使用远程桌面: ---------------------- ----------------------
- nginx本地转发
在conf文件下找到nginx.conf配置文件:添加如下代码:
- JS,删除数据时候,多次确认后才删除。
function delfun(){ if(window.confirm("请仔细核对无误,删除本数据后不能恢复.")){ if(window.confirm("请再次确 ...
- free-简单明了解释清楚怎么看内存使用
free命令可以用来查看系统内存使用情况.我一般习惯-m参数以MB的方式查看 [root@localhost ~]# free -m total used free shared buffers ca ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- java反射(基础了解)
package cn.itcast_01; /** *Person类 */ public class Person { /** 姓名 */ private String name; ...
- touch
Linux touch 命令 在 Linux 下运用 touch 命令创建一个空文件.当然我们也可以使用其他命令例如 vi, nano 或是任意一个编辑工具来实现.但是你可能需要更多的步骤来完成操 ...
- 3. Longest Substring Without Repeating Characters(c++) 15ms
Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...
- C#夯实基础之接口(《CLR via C#》读书笔记)
一. 接口的类型 接口是引用类型.因此从值类型赋值给接口是需要装箱的.如下所示: class Program { static void Main(string[] args) { ISay catS ...