Sockets 套接字未从服务器接收两条消息(几乎同时接收)
所以我在这里遇到了这个问题,我使用一个openfl.net.Socket来连接我的服务器并从中接收消息。 问题是服务器几乎同时发送两条消息,而我的套接字似乎只读取一条消息,我尝试在第二条消息上设置断点,并在它停止后释放它,就像睡眠0.5秒一样,因此我的客户端接收两条消息,但几乎同时发送两条消息,我只收到一条。。。小费Sockets 套接字未从服务器接收两条消息(几乎同时接收),sockets,haxe,openfl,Sockets,Haxe,Openfl,所以我在这里遇到了这个问题,我使用一个openfl.net.Socket来连接我的服务器并从中接收消息。 问题是服务器几乎同时发送两条消息,而我的套接字似乎只读取一条消息,我尝试在第二条消息上设置断点,并在它停止后释放它,就像睡眠0.5秒一样,因此我的客户端接收两条消息,但几乎同时发送两条消息,我只收到一条。。。小费 socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse); function onResponse(e:Prog
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
function onResponse(e:ProgressEvent):Void
{
trace("response");
if (socket.bytesAvailable > 0)
{
var size:Int = socket.readInt();
var domainId:Int = socket.readInt();
var messageId:Int = socket.readInt();
var count:Int = socket.readInt();
var socketData:String = socket.readUTFBytes(socket.bytesAvailable);
trace("RECEIVE: " + socketData);
var message:Message = Message.JSONToMessage(socketData);
Domain.processMessage(message);
}
}
我希望我说得很清楚因此,在接收端,在一个recv中,您将获得从另一端发送的所有数据 关于TCP,您应该知道的一件事是它不维护消息边界。它实际上不知道什么是信息。这是一个字节流协议。此处的三次发送将导致另一端有三个recv,甚至另一端有一个recv,用于完全交换数据
使用TCP的应用程序应该根据TCP交付给它们的内容构造消息。TCP只是确保数据按发送顺序发送,并尽力将数据包发送给接收方。由应用程序协议定义应如何处理数据。当您只收到一条消息时,大小是多少?是发送的两条信息的总和吗?是的,是!!好极了!!我如何解决它?