LPC有五种不同的通信模式(socket模式)

① MUD (面向连接的通信模式)
可以把除Object以外的所有LPC模型从一个MUD传到另一个MUD
弊端: 无法传送物件造成了穿越MUD的功能(即需要一个个的发送和接收物件的所有直接、间接继承,
可扩展性、可兼容性比较差)

②STREAM 模式
也是一种面向对象的通信方式,与MUD不同的在于,他的所有数据都是以字符串形式传递。
弊端: 由于无法直接发送和接收所有的IPC类型,STREAM则没有那么强大(适用于像Telnet协议,这样不需要发

送整数,数组这样的数据;只发送各个方向的字符流)的协议;
其实MUD模式的实现原理就是使用特殊的代码以STREAM模式来发送个接收LPC的数据类型。所以速度要比MUD快,

内存消耗比MUD少
它是将字符串分份,一份一份的送,所以在网络延迟的情况下,无法确定组合之后的字符串是否完整

③ DATAGRAM模式
DATAGRAM是无连接的,不需要跟服务器确定连接就可以发送数据,它所传送的数据是一种叫“dataGRAM”的数

据包,数据包存在寻址信息,可以自觉地从网络一端到另一端
弊端: 因为没有一个确定的连接,所以数据包可能在网络中丢失,发送方无法得知数据包是否丢失,接收方也

不知道数据包的存在

④TCP和UDP模式
TCP是能保证数据被正确发送的协议
如果它发现数据丢失了,尝试重新发送,知道收到为止,确保了数据可以按照顺序到达,不会收到两个同样的

数据包
STREAM 是建立TCP连接然后发送数据的
UDP是一只面向Datagram 的协议,简单来说就是发送没有连接;
在特殊情况下可以使用UDP,不需要考虑数据是否发送到了的情况下使用UDP,可以有效降低网络负担

LPC 网络编程的更多相关文章

  1. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  2. python select网络编程详细介绍

    刚看了反应堆模式的原理,特意复习了socket编程,本文主要介绍python的基本socket使用和select使用,主要用于了解socket通信过程 一.socket模块 socket - Low- ...

  3. Linux Socket 网络编程

    Linux下的网络编程指的是socket套接字编程,入门比较简单.在学校里学过一些皮毛,平时就是自学玩,没有见识过真正的socket编程大程序,比较遗憾.总感觉每次看的时候都有收获,但是每次看完了之后 ...

  4. 猫哥网络编程系列:详解 BAT 面试题

    从产品上线前的接口开发和调试,到上线后的 bug 定位.性能优化,网络编程知识贯穿着一个互联网产品的整个生命周期.不论你是前后端的开发岗位,还是 SQA.运维等其他技术岗位,掌握网络编程知识均是岗位的 ...

  5. 浅谈C#网络编程(一)

    阅读目录: 基础 Socket编程 多线程并发 阻塞式同步IO 基础 在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践. Socket是一种网络编程接口,它是对传输层T ...

  6. C++11网络编程

    Handy是一个简洁优雅的C++11网络库,适用于linux与Mac平台.十行代码即可完成一个完整的网络服务器. 下面是echo服务器的代码: #include <handy/handy.h&g ...

  7. Java - 网络编程

    Java的网络编程学习,关于计算机基础的学习参考:计算机网络基础学习 - sqh.     参考:  

  8. Linux网络编程-IO复用技术

    IO复用是Linux中的IO模型之一,IO复用就是进程预先告诉内核需要监视的IO条件,使得内核一旦发现进程指定的一个或多个IO条件就绪,就通过进程进程处理,从而不会在单个IO上阻塞了.Linux中,提 ...

  9. Python Socket 网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

随机推荐

  1. Centos7添加新源

    yum repolist # 查看yum源列表yum localinstall http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epe ...

  2. centos7.2 下 部署单节点redis 3.2.5

    #tar -xvf redis.3.2.5.tar.gz –C /usr/local/ #cd /usr/local/ #mv redis.3.2.5 redis #cd redis #make &a ...

  3. Python appium搭建app自动化测试环境

    appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...

  4. ef mysql

    App.config <configuration> <configSections> <!-- For more information on Entity Frame ...

  5. GraphQL Java Demo代码

    mvn 引用GraphQL <dependency> <groupId>com.graphql-java</groupId> <artifactId>g ...

  6. jetty切换tomcat中文乱码

    项目中文在jetty下正常,换tomcat下出现乱码. 问题是web.xml中的encodingFilter不是第一个,要设置为第一个 <filter> <filter-name&g ...

  7. java学习笔记07-循环

    java有三种主要的循环结构 while循环 do...while循环 for循环 while循环 while(布尔表达式){ //循环内容 } public static void main(Str ...

  8. linux下动态链接库(.so)的显式调用和隐式调用

    进入主题前,先看看两点预备知识. 一.显式调用和隐式调用的区别 我们知道,动态库相比静态库的区别是:静态库是编译时就加载到可执行文件中的,而动态库是在程序运行时完成加载的,所以使用动态库的程序的体积要 ...

  9. springboo+nginx测试反向代理01

    操作环境:centos7,springboot2.1,nginx1.8.1 boot程序链接地址 : https://github.com/zgq7/nginxDemo nginx下载地址: http ...

  10. cocos2dx-lua http请求下载图片,使用XMLHttpRequest类

    HttpFileDownLoadSimple.lua local downloader = {} --数据拆分,以没1024*5字节拆成一段,打包写入文件 (拆完再拼接,转成字符串) local fu ...