`
flashing
  • 浏览: 355092 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

今天解答的网络传输方面的几个问题,json/socket/ws的差异

阅读更多

看到有位童鞋问到json/socket/ws的差异,似乎面试被问到的,就作答了一下。

ws是基于http协议的(当然JAX-WS貌似认为ftp之类的也可以?)以xml为载体的通信方式。
ws的好处是第一是直观(xml吗!),第二是标准(貌似ms从2002年就开始力推了),当然
也方便了异构系统的交互。如果你想提供对外的业务访问的接口,可能需要浏览器,各种语
言的客户端等各种异构系统访问,ws是首选。简单的例子比如你提供个天气预报服务。
java里面首选cxf。

如果说http和ftp是语言,socket顶多算发音。基于socket的编程为你提供了tcp/ip或者
udp的通信的实现;如果你做标准的服务器,比如下载服务器;或者语音通信的程序,或者
视频,文件传输……这些只能用socket。当然单纯用socket写会很烦的,你要处理各种东西
,协议的编解码等等,所以这种情况下推荐mina,netty或者grizzly。

json是个很不错的玩意,本质来说它就是javascript片段描述的对象。说到这里各位聪明的
弟弟妹妹们肯定明白,它应该对浏览器很有用。是的!如果你要做一个ajax的功能的话,
json是最简单有效而且性能灰藏好!比如mtime的很多异步功能都是用json方式传递的。
json好在没有什么门槛,也可以用于异构系统交互,不过如果异构系统不仅仅是浏览器,那
你还是选择ws吧。jsonlib等库都可以直接把一个对象转为json字符串,struts2也提供了
json插件,2.1.8以后是内置插件了。

说点题外话,个人认为ws就是个政治妥协的产物。话说当年ice的作者对此很不屑,认为是
个骗局……不过到底ws是立足了,我们只能干瞪眼。

 

等项目不忙的时候我会出几篇帖子详细讲讲如何用mina和netty做个语音聊天程序的服务器端和客户端。

 

1
0
分享到:
评论
1 楼 zhangyou1010 2010-11-08  
"等项目不忙的时候我会出几篇帖子详细讲讲如何用mina和netty做个语音聊天程序的服务器端和客户端。"

博主是不是一直很忙啊?

相关推荐

    C++解析json/socket通讯

    在C++中,socket API主要包含在`<sys/socket.h>`和`<netinet/in.h>`头文件中。以下是一个简单的TCP socket通信示例: 1. 创建服务器端socket: ```cpp int serverSocket = socket(AF_INET, SOCK_STREAM, 0); ...

    C++ 实现json形式的Socket传输图片

    总结来说,C++实现JSON格式的Socket图片传输涉及了C++编程、网络编程、JSON处理和图片编码等多个方面。通过熟练掌握这些技术,开发者可以构建高效、可靠的网络通信系统。在实际项目中,可以根据需求选择合适的库和...

    C++实现Socket传输json(UDP形式)

    在这个场景中,我们关注的是C++如何通过Socket实现UDP(用户数据报协议)传输JSON(JavaScript Object Notation)数据。首先,让我们逐一解析这些关键词来理解涉及的知识点。 **C++**: C++是一种静态类型的、编译...

    c语言编写 基于SOCKET HTTP Json 请求

    在IT行业中,网络编程是不可或缺的一部分,特别是在分布式系统和客户端-服务器应用中。本文将深入探讨如何使用C语言通过SOCKET实现HTTP协议,并且重点讲解如何构造和发送JSON格式的数据进行POST请求。我们将以Visual...

    android 利用socket 发送Json数据demo

    在Android开发中,利用Socket发送Json数据是一种常见的网络通信方式,尤其在移动应用与服务器进行实时交互时。本文将深入探讨如何在Android中实现这一功能,包括Json数据格式的使用、Socket通信的基本原理以及实际的...

    基于 Linux Socket 和 JSON 的服务器与客户端文件传输

    linux 下的 Socket 服务器同时与多个客户端进行文件传输, 其中客户端用 Qt 编写的, 可以在Ubuntu 和 Windows 下运行。服务器代码可以在 ubuntu 下运行, 也可以用交叉编译器编译在 ARM 下运行。命令与数据端口分开...

    json.h源文件下载

    json 是一种轻量级的文本数据交换格式; json 独立于语言、平台,使用java script语法来描述对象; json 解析器和json库对多种不同语言均提供了支持; json (JavaScript Object Notation) 指的是javascript对象...

    Android利用Json来进行网络数据传输

    本篇文章将探讨如何在Android环境下利用JSON进行网络数据传输。 首先,HTTP协议是互联网上应用最为广泛的一种网络传输协议,Android应用通常通过HTTP协议与服务器进行数据交互。在Android中,可以使用`...

    Ajax中使用JSON传输数据

    在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的无刷新更新,提高用户体验。...在实际开发中,还需要注意安全问题,如避免XSS和CSRF攻击,以及优化网络传输性能,如使用GZIP压缩等。

    socket 、webservices、Json的区别

    首先,Socket是网络编程的一个基本概念,它允许两个应用程序通过网络进行通信。Socket提供了一种低级别的接口,允许开发者直接处理TCP/IP协议栈。在操作系统中,Socket可以视为进程间通信(IPC)的一种形式,尤其...

    Delphi Json/XML 解析类

    在实际使用中,你可能需要处理各种特殊情况,比如编码问题、XML命名规则、JSON的null与Delphi的nil之间的差异等。确保正确处理这些问题可以避免潜在的运行时错误。 总之,Delphi提供了强大的工具,如SuperObject和...

    C++实现json形式的Socket传输图片

    C++实现json形式的Socket传输图片 本文详细介绍了C++实现...本文详细介绍了C++实现json形式的Socket传输图片,涉及到C++语言、json数据格式、Socket编程和图片传输等多方面的知识点,为大家提供了一个完整的实现方案。

    android网络请求 json传输

    在Android应用开发中,网络请求和JSON数据传输是不可或缺的部分,尤其在当今互联网时代,大部分应用程序都需要与服务器进行数据交互。JSON(JavaScript Object Notation)因其轻量级、易读写和易于处理的特性,成为...

    C# Winform Sockets收发Json样例

    参照博客C# JSON和对象之间互相转换用Winform进行了JSON和对象之间转化的呈现,并用Socket来传输JSON。原文链接:http://www.cnblogs.com/HCCZX/p/5238556.html

    as3corelib.swc及解析json的例子

    as3corelib是一个强大的ActionScript 3库,它包含了一系列实用工具类,其中一个重要的功能就是处理JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,广泛用于Web服务和客户端之间的数据...

    linux下socket文件传输

    在Linux系统中,Socket是一种进程间通信(IPC)机制,广泛应用于网络通信,尤其是在文件传输中。本知识点将深入探讨如何在Linux环境下利用基于Socket的TCP连接进行文件传输,这适用于标准的Linux PC以及嵌入式Linux...

    json的使用小例子

    序列化是将数据结构或对象转换为字节流的过程,以便存储或通过网络传输。在C++中,没有内置的JSON序列化库,但有许多第三方库可以帮助我们实现这一功能,如nlohmann/json,这是一个流行且易用的C++ JSON库。使用...

    C++实现Socket传输json封装的Mat

    一般进行图片传输时,先用openCV把图片转换为Mat,然后封装到json当中,然后再从json中解析出来。这次是客户端向服务端传输。

    json完整版下载

    标题"json完整版下载"可能是指提供了一个包含所有必要JSON库的Java JAR文件,使得开发者能够方便地在SSH框架项目中处理JSON数据。这种JAR文件通常包含了如Jackson、Gson或org.json等流行的JSON库,它们提供了JSON...

    灵活方便的TCP/IP Socket服务端及客户端工具

    在计算机网络中,TCP/IP Socket是应用程序进行网络通信的一种标准接口,提供了数据传输的底层连接。这个工具显然是用VC6(Visual C++ 6.0)开发的,这是一款微软早期的C++集成开发环境,尽管现在已经较为老旧,但它...

Global site tag (gtag.js) - Google Analytics