0

I'm developing a system in which a C coded TCP server is listening for new connections from clients, on connection parse the data & store into database.

I'm familiar with JSON, and would like to use this as the data-interexchange between client & server. My issue here is the additional complexity of parsing json using C, in context to using a dynamic language such as php or java.

Before i start venturing in JSON headers/libraries (i'm currently looking at json-c), i thought it best to check with the community if JSON was a reasonable choice of format for this purpose? I've only worked with data inter-exchanges with higher level languages, so ease of parsing was always taken for granted.

asked Feb 11, 2015 at 12:29

3 Answers 3

1

Parsing chunks from a stream is usually an issue.

One of the issues is that you often need to know the size of the packet to allocate the buffer needed to hold it while parsing. Most text based formats don't have that instead they are delimited by a special set of characters (JSON it's the closing brace/bracket).

If you elect for a binary transmission I suggest a fixed header with size and a integer denoting what message it is.

answered Feb 11, 2015 at 13:18
0

Don't see why not, its juts another format you have to handle, and there are thousands of them in the wild already. At least JSON is a well-known format.

A quick google says libjso, cJSON, and NxJSON are available as libraries to help parse and manage your data payloads so there shouldn't be much issue with the complexity of parsing it, no ore so than XML or text, say.

One thing I would suggest is to use an embedded webserver instead of a plain socket, if you're using JSON I might guess you may want web clients in the future (as there are plenty of these to chose from and they're really simple to add to your project)

answered Feb 11, 2015 at 13:10
0

There are also some other libraries used for data exchange, e.g. protobuf or MessagePack. These libraries can better fit your needs - depends on data you plan to exchange

answered Feb 11, 2015 at 14:30

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.