请教个问题:在相同IP和端口号的情况下建立的连接,在短时间里内重连,重连的时候会被踢下线,业务代码什么都没有写,这是为什么?
补充一下:TCP协议
业务bug
没有业务代码...
不可能一点代码都没有。你把代码贴出来,包括客户端和服务端,不然其他人怎么给你定位。
@1459:@1459: 服务端确实没有任何代码
@1459:客户端 当同一IP同一端口号 短时间重连 会遇到这个问题 但是当端口号不同的时候,就不会有这个问题出现 不知道是哪里的问题 linux lsof:端口号命令 也看不到有这个连接在线 应该是被服务端T掉了的
可能是客户端问题
当同一IP同一端口号是啥意思?连服务端不是固定的ip和端口号么?
@1459:客户端的IP和客户端的端口号
@1459:想了解下workerman底层 是否是根据IP和端口号生成的socket连接,如果是,那么,会不会是把第二次的连接当成了第一次的连接从而踢掉了
我理解你的意思了,发起连接的时候你复用了本地端口。本地端口没那么快回收的,所以你快速复用一个端口造成连接建立失败,实际上连接都没建立起来就失败了
@1459:建立起来了 我还收到了消息的 手动一直点发送消息能收到 ,但是等待30秒再发 这个时候就掉线了
@1459:并且 这边是单片机 重连的时候 实际已经重启了 应该不会存在端口释放复用的问题
你描述问题的时候都这些都没描述清楚....
30秒后不能发消息了可能是设置了心跳,超过30秒就断开连接。不懂的话看下文档吧
连的时候不要指定本地固定端口去连。因为你机器重启了服务端不一定知道,服务端操作系统认为这个连接还连着,并记录客户端本地端口。当你再用这个端口去连的时候服务端操作系统会认为你这个是或者上个连接是非法连接,就会有问题
@1459:服务端和客户端都没有设置心跳 。 连接,不指定固定端口,你的意思是说,客户端不指定固定端口去连接服务端吗?
我感觉我和你说的不是一个事情。你也描述不清楚,我也不想再说了
@1459:客户端连接其他的非workerman socket测试服务端都没有问题的,这边自己用其他语言也写了几个socket服务端,都没有问题,唯独使用php workerman框架 会出现这个问题,会不会是workerman释放失去的连接,逻辑处理上有一些问题啊?求赐教
@1459:或者是不是我哪里没有设置对
@1459:看似 客服端同端口号 短时间内重连,服务端把新的连接踢掉了
这是服务端代码,客户端代码是C#的测试
补充一下:TCP协议
业务bug
没有业务代码...
不可能一点代码都没有。你把代码贴出来,包括客户端和服务端,不然其他人怎么给你定位。
@1459:@1459: 服务端确实没有任何代码
@1459:客户端 当同一IP同一端口号 短时间重连 会遇到这个问题 但是当端口号不同的时候,就不会有这个问题出现 不知道是哪里的问题 linux lsof:端口号命令 也看不到有这个连接在线 应该是被服务端T掉了的
可能是客户端问题
当同一IP同一端口号是啥意思?连服务端不是固定的ip和端口号么?
@1459:客户端的IP和客户端的端口号
@1459:想了解下workerman底层 是否是根据IP和端口号生成的socket连接,如果是,那么,会不会是把第二次的连接当成了第一次的连接从而踢掉了
我理解你的意思了,发起连接的时候你复用了本地端口。本地端口没那么快回收的,所以你快速复用一个端口造成连接建立失败,实际上连接都没建立起来就失败了
@1459:建立起来了 我还收到了消息的 手动一直点发送消息能收到 ,但是等待30秒再发 这个时候就掉线了
@1459:并且 这边是单片机 重连的时候 实际已经重启了 应该不会存在端口释放复用的问题
你描述问题的时候都这些都没描述清楚....
30秒后不能发消息了可能是设置了心跳,超过30秒就断开连接。不懂的话看下文档吧
连的时候不要指定本地固定端口去连。因为你机器重启了服务端不一定知道,服务端操作系统认为这个连接还连着,并记录客户端本地端口。当你再用这个端口去连的时候服务端操作系统会认为你这个是或者上个连接是非法连接,就会有问题
@1459:服务端和客户端都没有设置心跳 。 连接,不指定固定端口,你的意思是说,客户端不指定固定端口去连接服务端吗?
我感觉我和你说的不是一个事情。你也描述不清楚,我也不想再说了
@1459:客户端连接其他的非workerman socket测试服务端都没有问题的,这边自己用其他语言也写了几个socket服务端,都没有问题,唯独使用php workerman框架 会出现这个问题,会不会是workerman释放失去的连接,逻辑处理上有一些问题啊?求赐教
@1459:或者是不是我哪里没有设置对
@1459:看似 客服端同端口号 短时间内重连,服务端把新的连接踢掉了
这是服务端代码,客户端代码是C#的测试