java json socket_linux c、java socket json 通信

标签:

一、服务端 c++

shaoyongyang@ubuntu:~/Public/xtranfer$ cat ./main.c

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include "cJSON/cJSON.h"

#define BUFFER_SIZE 255

#define SERVER_PORT 13579

#define LIGEN_OF_LISTEN_QUEUE 5

char* doit();

int main(int args, char** argv)

{

const char* welcome = "welcome to shaoyongyang‘s server\n";

const char* welcome_tip = "please input your id:\n";

//init socket

int servfd,clifd;

struct sockaddr_in server_addr,client_addr;

//test json

const char *json = doit();

if((servfd = socket(AF_INET,SOCK_STREAM,0)) 

{

printf("socket create error!\n");

exit(1);

}

server_addr.sin_family = AF_INET;

server_addr.sin_port = htons(SERVER_PORT);

server_addr.sin_addr.s_addr = htons(INADDR_ANY);

if(bind(servfd,(struct sockaddr*)&server_addr,sizeof(server_addr)) 

printf("bind to port %d\n failure!", SERVER_PORT);

exit(1);

}

if(listen(servfd, LIGEN_OF_LISTEN_QUEUE) 

printf("create listen failure!\n");

exit(1);

}

while(1) {

char buf[BUFFER_SIZE];

long timestamp;

socklen_t length = sizeof(client_addr);

clifd = accept(servfd,(struct sockaddr*)&client_addr,&length);

if(clifd 

printf("accept error !\n");

break;

}

//close and print message

printf("from client IP:%s,Port:%d\n", inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));

timestamp = time(NULL);

int x = strlen(json);

printf("-- \n\n%s\n--", json);

printf("-- send size:%d --\n", x);

send(clifd,json,x,0);

close(clifd);

}

close(servfd);

doit();

}

char* doit()

{

cJSON *root,*fmt,*img,*thm,*fld;char *out;int i;

root=cJSON_CreateObject();

cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));

cJSON_AddItemToObject(root, "format", fmt=cJSON_CreateObject());

cJSON_AddStringToObject(fmt,"type",             "rect");

cJSON_AddNumberToObject(fmt,"width",            1920);

cJSON_AddNumberToObject(fmt,"height",           1080);

cJSON_AddFalseToObject (fmt,"interlace");

cJSON_AddNumberToObject(fmt,"frame rate",       24);

out=cJSON_Print(root);  cJSON_Delete(root);     printf("%s\n",out);     free(out);

return out;

}

shaoyongyang@ubuntu:~/Public/xtranfer$

我引用的是cJSON

编译的时候需要执行

g++ cJSON/cJSON.c main.c -o main -lm

二、客户端 java

package com.divego.web.controller;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

/**

* Created by shaoyongyang on 2015/5/25.

*/

public class SocketController {

public static void main(String args[]) {

try {

Socket socket = new Socket("192.168.1.149", 13579);

//向本机的4700端口发出客户请求

BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));

//由系统标准输入设备构造BufferedReader对象

PrintWriter os = new PrintWriter(socket.getOutputStream());

//由Socket对象得到输出流,并构造PrintWriter对象

BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//由Socket对象得到输入流,并构造相应的BufferedReader对象

//  System.out.println("i am recv the length:"+ is.readLine().);

String info = null;

while((info=is.readLine()) != null) {

System.out.println(info);

}

//从Server读入一字符串,并打印到标准输出上

os.close(); //关闭Socket输出流

is.close(); //关闭Socket输入流

socket.close(); //关闭Socket

} catch (Exception e) {

System.out.println("Error" + e); //出错,则打印出错信息

}

}

}

正如代码,客户端仅仅负责连接,读取数据。

总结:

如果我们把服务端加入,多线程,数据库操作, 缓存等等, 那么能不能理解为另一套数据层处理框架,c++的性能绝对是没法说的。all right, 继续琢磨吧。

顺带截几张图好了。

bf6330446b51f00b6c7c9851ef1888a7.png

e1cfff7c1dfa2df76b0850747344971b.png

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值