[UE4]FSocket client客户端如何检测与server服务端断开链接

目前FScoket无法做到感知服务端关闭tcp链接,要做到只能通过两种其他方式:

1,使用BSD socket(建议使用non-blocking mode,因为这样方便终止接收线程);

2,客户端发送心跳包给服务端,如果没有得到回应则认为关闭。

 

下面方法仅适用于客户端自己关闭连接,如果是服务端关闭是没法感知的

if (Socket->GetConnectionState() != SCS_Connected)
{
	// Socket disconnected 
}
else
{
	if (Socket->HasPendingData(Size))
	{
		Socket->Recv(Data, MaxBuffer, BytesRead);
	}	
}

 

之前在answerhub上提了一个bug说明这个情况,但是得到的回复是让我仔细检查自己的代码,说FSocket就是基于BSD实现的, 本来想直接贴代码给他解释下的,但是感觉麻烦不想折腾。

 

参考:

FSocket - How to handle client disconnection

https://answers.unrealengine.com/questions/265930/fsocket-how-to-handle-client-disconnection.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值