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. 在mysql 5.7中,创建表的字段名中包含双引号的时候,执行会报错

    解决办法,添加 SET SESSION SQL_MODE=ANSI_QUOTES;

  2. subset_lat_dir.sh

    #!/bin/bash     # Copyright 2018 Jarvan Wang # Copyright 2017 Vimal Manohar # Apache 2.0.     cmd=ru ...

  3. Android logcat lines missing原因分析

    当出现类似如下错误日志时: 2019-04-14 17:51:14.506 10189-10189/com.ss.android.ex.parent D/GGK: no WonderfulVideo ...

  4. javascript获取当前域名

    <script language="javascript">//获取域名host = window.location.host;host2=document.domai ...

  5. qml layout

    一.使用总结 1.锚点:锚点锚在父控件左边anchors.left: parent.left ,才可以设置anchors.leftMargin:20 才有作用,设置anchors.topMargin: ...

  6. 关于el-upload上传

    <el-upload class="edit-input-upload" :action="config.baseUrl + '/joinus/candidate/ ...

  7. sortable.js 拖拽排序及配置项说明

    // 拖动排序 $(function() { /*排序*/ //排序 // Simple list ]; new Sortable(list, { group: "name", a ...

  8. P3436 [POI2006]PRO-Professor Szu

    P3436 [POI2006]PRO-Professor Szu 题目描述 n个别墅以及一个主建筑楼,从每个别墅都有很多种不同方式走到主建筑楼,其中不同的定义是(每条边可以走多次,如果走边的顺序有一条 ...

  9. numpy的数组常用运算练习

    import numpy as np # 一维数组 print('==========# 一维数组===========') A = np.array([1, 2, 3, 4]) print(A) # ...

  10. .net Core+Dapper MySQL增删改查

    新建一个用户表,以该有为例 1.Model层 public class TuiUsers { public int id { get; set; } public string userName { ...