delphi Socket收发疑惑

//发送
ServerSocket.Socket.Connections[i].SendBuf(D, SizeOf(D));
//接收
ClientSocket.Socket.ReceiveBuf(D, clntsckt.Socket.ReceiveLength);
//正常
现在我想添加一个发送和接收,下面的代码会传到D里面。
//有问题发送
SendBuf(B, SizeOf(B));
//有问题接收
ReceiveBuf(B, clntsckt.Socket.ReceiveLength);

发送是主动的函数调用,接收是被动的事件处理。你可以搜索 【用Delphi实现WinSocket高级应用】,那是我十多年前写的,只是很多转载都未注明作者,也不知道他们是啥心态。追问

却是大神,只不过内容里,没有关于c端处理多个data的例程。

追答

在S端的事件中有C端的ID和IP等信息,自己取出来管理即可。

追问

恩,发送的时候是根据Handle
就是现在的问题是Socket.Connections[i].SendBuf(D, SizeOf(D));、、一直在传送,c端一直在接受。但是c端请求另一组数据SendBuf(B, SizeOf(B));接收并处理

追答

S端的接收是事件触发的,S端的发送也应在接收事件处理完毕的最后进行;C端的发送是主动的,分包发送则是在S端反馈一组接收完毕之后在C端的接收事件中主动发送下一个包。你需要调整接收和发送的动作时序,把C端作为一个批处理的发起者,通过单工的方式交替C和S的动作,维持到一个批处理执行完毕。

温馨提示:答案为网友推荐,仅供参考