UDP socket.udp() 创建并返回一个无连接的UDP对象。该无连接对象支持以下函数:sendto、receive、receivefrom、getsockname、setoption、settimeout、setpeername、setsockname、close。其中的setpeername被用作连接对象(待解释)。 connected:close() unconnecte
转载
2024-03-06 08:04:44
175阅读
libuv经过Node.js的实践和应用,已经证明非常之成熟,本来之前项目用的是这个:clsocket https://github.com/DFHack/clsocket 当初选它的主要原因是它支持Windows、Linux、Mac OSX(我猜测的),但致命的缺点就是仅支持阻塞的TCP,这样就会导致一个问题,在连接游戏服务器、聊天服务器的时候游戏主界面会直接被卡死,等连接成功后才能
Producer发送消息阶段
发送消息阶段涉及到Producer到broker的网络通信,因此丢失消息的几率一定会有,那RocketMQ在此阶段用了哪些手段保证消息不丢失了(或者说降低丢失的可能性)。
手段一:提供SYNC的发送消息方式,等待broker处理结果。RocketMQ提供了3种发送消息方式,分别是:
同步发送:Producer 向 broker 发送消息,阻塞当前线程等待 brok
转载
2024-04-08 19:18:12
106阅读
LUA协程的介绍lua 有一套非常高效的协程机制, 这一套实现非常轻量级, 虽然简单意味着高效, 然而它并不是真正意义上的对称式协程. lua中使用 coroutine.create 来创建一个协程, 使用 coroutine.resume 来执行协程。使用 coroutine.yield 来让出当前正在执行的协程. 通过这两个函数,你可以在两个协程之间相互传递参数, 直到协程执行完成.local
转载
2023-08-24 10:48:38
203阅读
接下来是客户端部分,采用同步接收模式,在SocketClient项目中新建了一个SynServer类,用于存放socket服务器代码,和AsynServer类似,主要有4个方法:有一个全局socket,下面四个方法中都用到。Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.T
转载
2023-07-17 16:35:32
92阅读
接下来是服务器部分,采用异步模式,新建了一个AsynServer类,用于存放socket服务器代码,主要有4个方法:有一个全局socket,下面四个方法中都用到。Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);类框架如下:1.构造方法public AsynServ
转载
2023-08-21 17:05:53
122阅读
应该尽量使用 local 变量而非 global 变量
。这是
Lua
初学者最容易犯的错误。global 变量实际上是放在一张全局的 table 里的。global 变量实际上是利用一个 string (变量名作 key) 去访问这个 table 。虽然
Lua5 的 table 效率很高
转载
2024-08-28 15:17:29
45阅读
今天和人讨论了一下CPS变形为闭包回调(典型为C#和JS),以及Lua这种具有真正堆栈,可以yield和resume的coroutine,两种以同步的形式写异步处理逻辑的解决方案的优缺点。之后生出疑问,这两种做法,到底哪一种会更消耗。我自己的判断是,在一次调用只有一两个异步调用中断时(即有2次回调,或者2次yield),闭包回调的方式性能更好,因为coroutine的方式需要创建一个具有完全堆栈的
转载
2024-04-04 20:25:12
114阅读
nginx lualua协程机制:lua协程机制和nginx协程类似:线程空间站内的一个执行单元,类似于线程,有自己独立的运行空间,其空间是基于用户态模拟出来的一个独立的运行空间,依托于线程,也要像线程一样被CPU去执行。好处就是在编写代码时候不用考虑异步方式,完全同步的去编写。一旦协程遇到阻塞,比如IO调用,它会主动到nginx的epoll模型上注册异步回调的句柄,放弃自己的执行权限。然后当ep
转载
2024-06-21 13:10:34
312阅读
前言提到lua,就不得不提协程coroutine。coroutine是lua的一种内在机制,为lua提供了原生的异步支持。从用户层面来看,用户不需关心coroutine的内在实现,而只需要用coroutine调度function即可,因此非常方便。对于一个function而言,coroutine可以将function的代码分片,使得一个function可以分阶段运行。在实现上,function的状
转载
2024-04-16 21:34:55
331阅读
装上lua的exe文件
原创
2022-07-19 20:12:16
177阅读
1.首先下载luasocket库 可以直接下载编译好的库,也可以去github上下载源码后自己自己编译:
编译好的库下载地址:
http://files.luaforge.net/releases/luasocket/luasocket
源码下载地址:
https://github.com/diegonehab/luasocket
到官网上看了一下luasocket 的inst
转载
2024-03-25 20:20:28
138阅读
cosocket 是 OpenResty 世界中技术、实用价值最高部分。让我们可以用非常低廉的成本,优雅的姿势,比传统 socket 编程效率高好几倍的方式进行网络编程。无论资源占用、执行效率、并发能力都非常出色。鲁迅有句名言“其实世界上本没有路,走的人多了便有了路”,其实对于 cosocket 的中文翻译貌似我也碰到了类似的问题。当我想给大家一个正面解释,爬过了官方 wiki 发现,原来作者本人
转载
2024-05-28 09:31:51
96阅读
.NET Socket开发之异步Socket 在基于.NET的网络服务端的开发中,我们用到和听到的最多的恐怕就是异步Socket了。异步Socket的性能比同步高出很多,但是编写代码比较复杂。因此异步Socket也是网络上讨论比较多的话题。 今天,我们就来讨论一下如何用异步Socket开发网络应用。在此之前我们先讨论两个问题。 一、异步Socket是如何工作的: 那异步Socket是如何工
转载
2023-12-13 09:53:30
35阅读
本文将在C#中Socket同步通信的基础上,分析和研究Socket异步编程的实现方法,目的是深入了解Socket编程的基本原理,增强对网络游戏开发相关内容的认识。 什么是Socket编程的异步是实现 所谓Socket编程的异步实现是指按照异步过程来实现Socket编程,那么什么是异步过程呢,我们把在完成了一次调用后通过状态、通知和回调来告知调用者的方式成为异步过程,换句话说,在异步过程中当调用一
转载
2023-10-07 12:24:06
81阅读
首先我们了解下关于异步编程的一些知识可以参考我在网上收集的一些资料——C#异步Socket编程 我实现了基于异步通信的Socket服务器和客户端程序下面是我的代码 第一步:首先新建一个服务端项目YBServerWindowsForms然后在项目里添加一个自定义的类名为StateObject:
using System;
using System.Collectio
转载
2023-10-21 20:37:25
92阅读
前面说了socket建立与传输的函数,但是光这些函数,还不能达到网络通信程序的全部要求。因为accept, send和recv函数默认是同步的,也就是阻塞的。send还好说,发不出去就等着,有情可原。但是,accept和recv阻塞,通常会有麻烦,一个服务器程序,在试图接受连接(调用accept)之后, 由于没有客户端试图连接,所以服务器将进入阻塞状态,不能接受其他任何消息,包括用户输入,和窗口消
转载
2023-08-16 17:45:07
273阅读
前言:这段时间主要是优化项目的网络底层,由于项目采用的热更方案是xLua+Ab包,业务都是在lua那边,所以一开始用的是luasocket,而且是同步通讯,导致有时等待连接时主线程阻塞,或者要频繁的设置超时,导致性能和体验方面都不好,最后决定使用C#的Socket来写一遍。这篇主要是想分享在写这个xlua和C#Socket的网络底层时遇到的坑。 分析为什么不继续用luasoc
转载
2024-04-26 10:23:39
93阅读
1、使用Runnable2、使用DeferredResult3、异步处理的一些配置 正常请求方式 package com.nxz.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.sp
目录结构
LuaSocket 是 Lua 的网络模块库,它可以很方便地提供 TCP、UDP、DNS、FTP、HTTP、SMTP、MIME 等多种网络协议的访问操作。
它由两部分组成:一部分是用 C 写的核心,提供对 TCP 和 UDP 传输层的访问支持。另外一部分是用 Lua 写的,负责应用功能的网络接口处理。
一、安装LuaSocket
下面介绍两种安装方法
第一种方法:如果你有安装
转载
2024-03-06 16:59:55
2497阅读