c语言实现socket转json,C++解析JSON进行网络传输--一个通过JSON方式的socket传输

1、客户端:

#include "json//json.h"

#include

#pragma comment(lib, "WS2_32.lib")

#pragma comment(lib, "json_vc71_libmtd.lib")

int main()

{

Json::Value val;

Json::StyledWriter style_write;

val["name"] = "xiaoli" ;

WSADATA wsaData;

SOCKET SendSocket;

sockaddr_in RecvAddr;

int Port = 27015;

//初始化Socket

WSAStartup(MAKEWORD(2, 2), &wsaData);

//创建Socket对象

SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

//设置服务器地址

RecvAddr.sin_family = AF_INET;

RecvAddr.sin_port = htons(Port);

RecvAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

std::string SendBuf = style_write.write(val);

//向服务器发送数据

sendto(SendSocket, SendBuf.c_str(), SendBuf.size(), 0, (SOCKADDR*)&RecvAddr, sizeof(RecvAddr));

closesocket(SendSocket);

WSACleanup();

getchar();

return 0;

}

2、服务器端:

#include

#include

#include "json/json.h"

#pragma comment(lib, "WS2_32.lib")

#pragma comment(lib, "json_vc71_libmtd.lib")

int main()

{

//初始化socket

WSADATA wsaData;

WSAStartup(MAKEWORD(2,2), &wsaData);

//创建socket

SOCKET RecvSocket;

RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

//设置服务器地址

sockaddr_in RecvAddr;

int Port = 27015;

RecvAddr.sin_family = AF_INET;

RecvAddr.sin_port = htons(Port);

RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);

//绑定socket

bind(RecvSocket, (SOCKADDR*)&RecvAddr, sizeof(RecvAddr));

char RecvBuf[1024];

int BufLen = 1024;

sockaddr_in SenderAddr;

int SendAddrSize = sizeof(SenderAddr);

recvfrom(RecvSocket, RecvBuf, BufLen, 0, (SOCKADDR*)&SenderAddr, &SendAddrSize);

std::string strName;

Json::Value val;

Json::Reader reader;

if (reader.parse(RecvBuf, val))

{

strName = val["name"].asString();

}

std::cout << strName << std::endl;

closesocket(RecvSocket);

WSACleanup();

getchar();

return 0;

}

3、成功结果:

0818b9ca8b590ca3270a3433284dd417.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《linux就该这么学》第六节,计划任务和用户身份管理!

课本笔记&#xff1a; case条件测试语句 4.4&#xff1a;计划任务服务 at 设置一次性计划任务 at 时间 //设置执行的任务 at -l或atq // 查看设置好但未执行的任务 ctrld 保存at计划任务 ctrlc取消at计划任务 atrm 任务序号…

java学习(91):System类

//System类 import java.util.Date; import java.util.Properties; public class test26 {public static void main(String[] args){testOut(-1);//获取系统时间long sysTimeSystem.currentTimeMillis();System.out.println(sysTime);Date datenew Date();System.out.println(d…

c语言 用一维数组存储二叉树,用一维数组存储二叉树时,总是以前序遍历顺序存储结点。( ? )...

用前模式包括献不治疗的积人本哪项以下极贡。维数包括学校工作的过程和方面以下技术几个社区。组存总题大括&#xff1a;致包青少区问年社。可能在含工气体含有有或井施&#xff0c;备合格的个人和相防护应配用具应(。部件理液更换切断或修液压压钳应先。特殊须提劳动理情况前解…

Servlet 文件上传

Servlet 可以与 HTML form 标签一起使用&#xff0c;来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。 本文使用到的文件有&#xff1a; 创建一个文件上传表单 下面的 HTML 代码创建了一个文件上传表单。以下几点需要注意&#xff1a; 表单 method…

java学习(92):线程的创建方法一

//线程的创建方法1class Xc extends Thread {public void run(){for (int i0;i<20;i){System.out.println("我是歌谣");}} } public class test27{public static void main(String[] args){Xc xcnew Xc();xc.start();//程序会自动调用run方法for (int i0;i<20;…

C语言单链表实现FCFS算法,数据结构与算法复习题(含答案).doc

《数据结构与算法》2015-2016学年第1学期考试复习题选择题(下面各小题有一个正确答案&#xff0c;请将正确答案的编号填写在各小题的括号内)。1、在一棵具有5层的满二叉树中结点总数为( A )。A) 31 B)32C)33 D)162、串的逻辑结构与( D )的逻辑结构不相同。A)线性表 B)栈C)队列 …

java学习(93):线程的创建方法二

//创建线程的第二种方法class Xc2 implements Runnable {public void run(){for (int i0;i<20;i){System.out.println("我是歌谣");}} } public class test28{public static void main(String[] args){Xc2 xc2new Xc2();Thread anew Thread(xc2);a.start();//xc.s…

Pycharm使用之设置代码字体大小和颜色主题

1. File->Setting 打开如下所示的对话框&#xff0c;可以在Editor->General->Font下设置字体大小&#xff08;Size&#xff09;、行距&#xff08;Line spacing&#xff09; 2. Editor->Color Scheme 展开如下所示内容&#xff0c;可以选择自己喜欢的主题样式&am…

c语言分量的运算符,C语言基础(04-运算符和表达式)

运算符(也叫操作符)&#xff0d;&#xff0d;运算符是一个表示特定的数学或逻辑操作的符号。如号&#xff0c;表示了一个相加运算&#xff1b;&&号表示了一个逻辑‘与’的运算。由运算符把需要进行运算的各个量(常量或变量)连接起来组成一个表达式。下面要讲的是标准的…

java学习(94):cpu随机调用线程测试

//创建线程 class Xc3 extends Thread {public void run(){System.out.println("当前线程的名称为"Thread.currentThread().getName());} } public class test29{public static void main(String[] args){Xc3 xc3new Xc3();xc3.setName("线程1");//程序会自…

Linux学习——echo和read命令用法

转载自http://www.runoob.com/linux/linux-comm-read.html http://www.178linux.com/76331 echo命令 本文列举了echo命令的几个常用用法并加以实例说明&#xff0c;以作回顾、参考。 echo命令常用作打印输出字符串&#xff0c;根据echo帮助文件可以获得以下信息&#xff1a; 语…

w ndows 高级索引,软媒原创:为Windows7建立索引,搜索文件更给力

Win7之家(www.win7china.com)&#xff1a;软媒原创&#xff1a;为Windows7建立索引&#xff0c;搜索文件更给力也许你还记得XP时代搜索文件时出现的那只黄色的小狗狗&#xff0c;在Windows7时代&#xff0c;搜索变得更加快捷顺手&#xff0c;搜索栏就在那里&#xff0c;不点不搜…

java学习(95):线程的优先级

public class test30 {public static void main(String[] args){Thread xc11new Thread(new Xc41());Thread xc12new Thread(new Xc42());xc11.setPriority(Thread.NORM_PRIORITY3);//数字越大&#xff0c;优先级越高&#xff0c;默认为5xc11.start();xc12.start();} } class X…

51单片机学习笔记之定时器程序设计

一、定时器/计数器概述 1.相关寄存器 &#xff08;1&#xff09;TMOD——方式控制寄存器 GATE C/T M1 M0&#xff08;T1 T0&#xff09; GATE0&#xff0c;定时器/计数器的运行由内部TR0/TR1置1选通&#xff1b; GATE1&#xff0c;定时器/计数器的运行由外部中断&#xff08;I引…

c语言三阶素数魔方阵,用C语言构造3*3素数魔方阵,即找出9个不大于500的素数并排成魔方阵。...

匿名用户1级2014-05-10 回答#include<stdio.h>int sushu(int n){int i;if(n1) return 1;for(i2; i<n; i)if(n%i0) break;if(ni) return 1;else return 0;}int wunai(int t, int b, int c, int d, int e, int f, int g, int h, int p){int a[9];int i, j;a[0]t; a[1]b;…

java学习(96):线程的睡眠

//线程的睡眠 public class test31 {public static void main(String[] args){Xc43 xc43new Xc43();Thread cccnew Thread(xc43);ccc.start();} } class Xc43 implements Runnable {public void run(){for (int i0;i<10;i){System.out.println(Thread.currentThread().getNa…

《北方》--艾青

而我 ——这来自南方的旅客&#xff0c; 却爱这悲哀的北国啊。 扑面的风沙 与入骨的冷气&#xff0c; 决不曾使我咒诅&#xff1b; 我爱这悲哀的国土&#xff0c; 一片无垠的荒漠&#xff0c; 也引起了我的崇敬&#xff1a; ——我看见 我们的祖先 带领了羊群&#xff0c; 攻着…

android 广播唤醒应用,Android通过广播实现灭屏和唤醒

1、要实现灭屏和唤醒&#xff0c;需要在Manifest文件添加如下权限&#xff1a;2、以下是封装的一个工具类&#xff0c;实现屏幕唤醒和熄灭package testWakeAndLock;import android.content.Context;import android.os.PowerManager;import android.os.SystemClock;import com.e…

java学习(97):中断线程的另一种处理

public class test32 {public static void main(String[] args){Thread xc13new Thread(new Xc44());Thread xc14new Thread(new Xc44());xc13.setName("线程一");xc14.setName("线程二");xc13.start();xc14.start();} } class Xc44 implements Runnable {…

调试nodejs项目接口,使用Posman,用req.body拿不到数据

近日在postman 上面测试nodejs写的post接口&#xff0c;发现后台接受不到数据。 很多人其实不知道怎么postman 上面GET和POST怎么使用的 Postman接口操作 1.GET请求操作&#xff1a; 2.GET请求操作结果&#xff1a; 3.POST请求操作&#xff1a; 4.POST请求操作结果&#xff1a;…