我是靠谱客的博主 迷路铃铛,这篇文章主要介绍java基于TCP客户端的json报文通讯,现在分享给大家,希望可以做个参考。

1.java中json数据对象的创建

这里用到的是net.sf.json.JSONObject,put(Object,Object)可以简单的形成json树

复制代码
1
2
3
4
5
6
7
JSONObject json = new JSONObject(); JSONObject object = new JSONObject(); json.put("inter_mark", new String("SingleCheck".getBytes("GBK"), "UTF-8")); json.put("user_code", new String("l89798990".getBytes("GBK"), "UTF-8")); object.put("head", json); object.put("name", new String("name".getBytes("GBK"), "UTF-8"));

2.socket客户端的创建

复制代码
1
2
3
4
Socket socket = new Socket("ip", port); OutputStream outputStream = socket.getOutputStream(); PrintWriter printWriter = new PrintWriter(outputStream);

这里建立了socket客户端,并调用了socket获取输出流的方法,用到字符输出流,可以直接将字符传入而输出,但注意要冲刷缓冲区,防止出现字符停留在缓冲区中的情况。补充:字符流拥有缓冲区而字节流没有缓冲区(缓冲区在内存中),需要的话自己设置。(对于文本形式的文件或者报文建议用字符流读取,而对于音频等其他文件需要用字节流,不确定的也建议用字节流)。

3.报文发送

直接调用printerWrite的print方法,传入jsonObject即可,传输代码写完后记得调用socket的shutdownOutput方法,此话api中的解释:此套接字的输入流置于流的末尾,个人理解忽略之后传输的数据,但socket连接并不会关闭,防止需要时再次建立连接

4.响应报文接收

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String info = ""; String temp = null; while ((temp = bufferedReader.readLine()) != null) { info += temp; System.out.println("客户端接收服务端发送信息:" + Unicode2GBK(info)); } socket.shutdownInput(); inputStream.close(); printWriter.close(); outputStream.close(); socket.close();

同上此处用字符输入流读取响应,按行读取,同样记得关流,此处用到了一个Unicode2GBK方法下面会列出,作用是将此处收到的unicode编码报文转换为gbk,接着记得关掉所有的流,释放资源,关流要遵循由外到内的规则,最终记得关闭socket,此处省略io异常的catch块,内部直接将对象置为空。

附编码转换代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static String Unicode2GBK(String dataStr) { int index = 0; StringBuffer buffer = new StringBuffer(); int li_len = dataStr.length(); while (index < li_len) { if (index >= li_len - 1 || !"\u".equals(dataStr.substring(index, index + 2))) { buffer.append(dataStr.charAt(index)); index++; continue; } String charStr = ""; charStr = dataStr.substring(index + 2, index + 6); char letter = (char) Integer.parseInt(charStr, 16); buffer.append(letter); index += 6; } return buffer.toString(); }

一篇简单的socket客户端代码,欢迎看到的朋友提问或指正,本人一定洗耳恭听,有任何问题一定尽力解决。

最后

以上就是迷路铃铛最近收集整理的关于java基于TCP客户端的json报文通讯的全部内容,更多相关java基于TCP客户端内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部