网络模块(客户端的连接动作)

一个客户端连接网络模块工作(一个连接的过程)
监听线程收到一个连接后像轮询线程的连接队列中push一个conn_queue_item,然后向soketpair中写入一个字节
此时子线程就是自动调用设置的事件,然后从连接队列中pop一个socket
然后创建一个机遇socket的bufferevent
在createChannel中回调
void TCPServer::on_connect(int channel_id)
{
    packet pkt;
    pkt.size = (int)link_stat::link_connected;
    pkt.channel_id = channel_id;
    pkt.is_data = false;
    from_net_push_pkt(pkt);//向无锁队列中插入一个包
}
在net初始化的过程中创建了一个线程,专门从net无锁队列中取包,然后放入共享内存中
具体:在net线程中从TcpServer的无锁队列中取出包,然后放入共享内存中
libevent连接的回调把包放入无锁队列,然后net线程从无锁队列中取包放入共享内存中,这里面没有涉及到net模块的内存池
时间: 2024-10-12 14:04:58

网络模块(客户端的连接动作)的相关文章

Windows平台下Oracle 11g R2监听文件日志过大,造成客户端无法连接的问题处理

近期部署在生产环境的应用突然无法访问,查看应用日志发现无法获取数据库连接. SystemErr R Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection SystemErr R at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:359) SystemErr R at oracle.net.resolve

win7/win10-远程桌面 "由于安全设置错误, 客户端无法连接到远程计算机”

win7或win10 更新补丁后,远程桌面连接报错: "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后." 解决方法如下: Step 1:打开"本地安全策略"- Win+R 并输入 secpol.msc (或者在"管理工具"中打开): Step 2:在本地安全策略中,打开"本地策略"下的"安全选项": 在右边的策略中,找到"系统加密:将FIPS算法用于加密 .哈希和签名&q

Win2003中配置FTP服务,开启防火墙导致客户端无法连接【精华详解】

因为某种需求,我们在Win2003中配置FTP,可能使用的是IIS可能使用的是其他的服务软件,可能是出于安全的考虑我们必须开启防火墙,可开启防火墙导致客户端无法连接,关闭防火墙反而可以正常使用.由此我们得出,问题肯定是处在了端口上. 第一时间我们百度去寻求解决问题,很少能找到一篇满意的文章.都几乎是千篇一律的草文. 在这里整了下一下解决方案,如果你的问题满足上述内容,即可往下看. 解决方案: 开启防火墙,为了安全着想,不然就没必须费那么大神了. 在防火墙的例外设置中添加21端口(如果你有其他服务

"客户端无法连接到远程计算机"错误的解决方法

问题: 客户端无法连接到远程计算机. 可能没有启用远程连接或者计算机太忙不能接受新的连接. 也可能是网络问题阻止连接.请稍后重新尝试连接. 如果问题仍然存在 请与管理员联系. 解决方法: 1.首先确认远程登陆的服务是打开的,也就是Remote Desktop Services(Windows xp里面是Terminal Services)服务:右键我的电脑--管理--服务,找到Terminal Services服务,启动这个服务即可 2.右键我的电脑--属性--远程,勾选“允许用户远程登陆到服务

通过jedis连接redis单机成功,使用redis客户端可以连接集群,但使用JedisCluster连接redis集群一直报Could not get a resource from the pool

一,问题描述: (如题目)通过jedis连接redis单机成功,使用JedisCluster连接redis集群一直报Could not get a resource from the pool 但是使用redis客户端可以连接集群(我使用的redis desktop manager) 在java中通过jedis连接redis单机也成功,但使用JedisCluster连接redis集群一直报Could not get a resource from the pool, 我以命令行方式操作是没问题的

Oracle客户端无法连接服务端解决方法及步骤

客户端无法连接服务端数据库,原因有网络,配置,文件访问权限,数据库服务是否已启动 等问题导致,一般排查的步骤如下:1.检查操作系统级别网络是否通畅 ping 192.168.10.1 2.检查数据库层网络是否通畅 tnsping myserverdb 3.检查监听状态是否正常 lsnrctl status listener 4.如果第二步不通,检查服务端监听配置是否正确 监听文件配置一般如下 # 监听名称 LISTENER= (DISCRIPTION = (ADDRESS=(PROTOCOL =

[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Redis的初始化脚本文件及启动配置文件,并图解如何以服务的形式来启动.终止Redis服务,可以说我们的Redis本地服务器已基本搭建完成,那可能就有小伙伴要问了,什么叫基本搭建完成,原因是此时的Redis服务虽然已经可以正常启\停,但是客户端还无法远程连接到Redis并执行响应的操作.若要实现远程客户端正常连接,我们仍需要对Redis启动配置文件进行一些设置,这个章节我们重点来讲解下如何对Redis

CentOS7.4下 VNC Server的搭建和客户端的连接配置

CentOS7.4下 VNC Server的搭建和客户端的连接配置 服务器版本:CentOS Linux release 7.4.1708 (Core) yum方式安装VNC server yum install tigervnc-server 启动vnc 服务初次启动服务时,按提示设置VNC Service密码:服务成功启动后会在 /root/.vnc 下生成相关文件:该服务器启动后,开启端口为5901:如果命令为 vncserver :2, 开启端口为5902:以此类推: vncserver

客户端不能连接MySQL - 2003-Can't connect to MySQL server on '192.168.43.180'(10060 "Unknown error")

客户端不能连接MySQL 场景: 数据库(此处以MySQL为例)安装在虚拟机里面,在宿主机上进行连接数据库的时候始终不能连接,但在虚拟机中使用正常. 针对上面的场景: 1. 在虚拟机里面可以正常使用MySQL 2. 在宿主机上进行连接的时候,始终不能连接 解决方案: 第一步:检查账号是否支持远程链接? 相关操作指令: # mysql -uroot -p  使用root用户链接mysql # show databases             查看已有的数据框(主要是为了找:mysql 这个数据