Linux用TCP发送JSON数据格式的数据

xiaoyuVS 2016-04-13 07:25:20
各位有谁知道在Linux中如何用TCP讲JSON数据格式的数据发送出去吗?
...全文
2442 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wweerxx 2017-07-14
  • 打赏
  • 举报
回复
rep = cJSON_Print(root); len = strlen(rep); 我这么算长度,但是发送出去,TCP接受后解出来不对。
eziowayne 2017-03-13
  • 打赏
  • 举报
回复
我假设题主已经了解socket的基本使用,问的实际上是怎么发送json可以让接收端解析出相应的内容。 其实收发双方要建立一个通讯的协议,因为tcp是字节流,可以这么来规定:头部固定N个字节,其中有固定四个字节表示json数据的长度,然后N个字节后面紧跟一串json。这样双方就建立了简单的交互格式。 这种方法有一个好处,假设接收方的接收缓冲区比较小,可以扩展成一个分包传的协议,每次以较小的字节数直至传完整个json,当然这都是后话了。
jamon_tan 2017-03-13
  • 打赏
  • 举报
回复
直接当作字符串发送就行
  • 打赏
  • 举报
回复
json不是本来就是字符串吗。。。?
LubinLew 2017-02-20
  • 打赏
  • 举报
回复
怎么传都行,都是字节流,只要接收端的解释方式同发送端一致就行
布鲁克斯南南 2017-02-20
  • 打赏
  • 举报
回复
引用 5 楼 xingyuan1hao 的回复:
socket,write数据需要长度,json长度,你是怎么计算的?求解,谢谢
jsoncpp 里const char* p = writer.write(root).c_str();可以参照这个
xingyuan1hao 2017-02-16
  • 打赏
  • 举报
回复
socket,write数据需要长度,json长度,你是怎么计算的?求解,谢谢
jiqiang01234 2016-04-15
  • 打赏
  • 举报
回复
都是文本数据,直接发送就行了。可以在发送的时候加一个分隔符,比如'\0'。这样在接收方解码的时候比较方便
丧心病狂的我 2016-04-15
  • 打赏
  • 举报
回复
最近刚好也在做类似的东西,或许可以帮到你 tcp通过 socket 发送 char *数据,你只要把json数据组装好就行了。 看你是自己组装json,还是用第三方库组装json rapidjson 是我感觉比较方便使用的 json 第三方库 你可以了解下,组装好json 可以按string 返回,比较方便。
zhxingway 2016-04-15
  • 打赏
  • 举报
回复
如果JSON数据是保存在文件中,以字节流的方式读出来,再用char*类型发出去,对方接收后以%c显示
xiaoyuVS 2016-04-15
  • 打赏
  • 举报
回复
谢谢大家的帮忙,我是用的JSONCPP库,自己组装好JSON数据,不过要用TCP发送,还要转换一下格式,目前是能够发送了。

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧