evalli 嗯嗯,感谢解答
9.0之前NetInnerComponent,9.0ProcessOuterSender。 TCP和KCP都不是一个层的东西,TCP传输层,KCP应用层。KCP包体在UDP,TCP的Data部分。
gxh_1995
IxbxAx 协议不同在网络传输时不时应该被自动丢弃了吗 为什么Gate(TCP)发往Map(KCP)能被正确发送并接收呢
gxh_1995 可能看错了吧,内网都是KCP
gxh_1995 Gate对外开的TCP吧,内网协议也改成TCP了吗?
gxh_1995 不是协议不同就要被丢弃, 能被丢弃的原因是数据包没法正常解析出来, 不管什么协议发送的, 只要数据包能被正常解析,那就不会被丢弃
IxbxAx
我有修改过的,对外开放连接是tcp
IxbxAx 内网还是kcp
evalli 啊? 协议不同会被丢弃呀。在传输层解析网络包是协议不同就不会处理这个网络包了,上层都没有处理包的机会
gxh_1995 NetInnerComponent负责内网通信的
gxh_1995 Gate对外监听TCP端口,去处理玩家的连接。然后会把消息转发到其他进程。各个游戏进程监听了UDP端口去处理其他进程的内网连接。比如client=>gate=>map。有一步转发的过程,比如7.2 NetServerComponentOnRead那块儿代码。
IxbxAx 【然后会把消息转发到其他进程】:这里gate转发到map时,为啥map能收到数据呢,他们两的协议族都不同
gxh_1995 就是gate和map又创建了新的连接,udp包着kcp通信的。
IxbxAx 哦哦,意思是gate有两个连接吗?一个是对外的tcp协议,一个是对内的kcp,对外的socket收到数据,使用对内的kcp转发给其他进程
gxh_1995 √
IxbxAx 🤩 通了通了,感谢解答