关于socket的sendbuf问题(50分)

  • 主题发起人 主题发起人 yuanfuyu
  • 开始时间 开始时间
Y

yuanfuyu

Unregistered / Unconfirmed
GUEST, unregistred user!
在客户端触发一个事件,用clientsocket发送消息,语句为:
clientsocket1.socket.sendbuf(sendVar, 4);
在服务器端serversocket的clientread事件中接收,语句如下:
socket.receiveBuf(receVar, 4);
为什么会出错?
 
将上面的语句分别改为:
ClientSocket1.Socket.Connections[0].SendBuf(sendVar, 4);及
Socket.Connections[0].ReceiveBuf(receVar, 4);

Try it!
 
多个客户端怎么办?
 
又有问题:为什么客户端
clientsocket1.socket.SendBuf(x1,sizeOf(integer));
在服务器
socket.ReceiveBuf(x1, sizeOf(integer));
传送接收正确。

但是客户端连续执行两次:
clientsocket1.socket.SendBuf(x1,sizeOf(integer));
clientsocket1.socket.SendBuf(y1,sizeOf(integer));
在服务器相应执行
socket.ReceiveBuf(x1, sizeOf(integer));
socket.ReceiveBuf(y1, sizeOf(integer));
后接收到的数据就不对了呢?
 
因为一个ServerSocket可以同多个ClientSocket通讯,
所以ServerSocket.Socket有一个属性:ActiveConnections是integer,表示当前活动连接的
个数,从ServerSocket端发送数据时,要确定是和第几个活动连接之间通讯,
因此要注意Connections的使用。
 
服务器端
1.socket.ReceiveBuf(x1, sizeOf(integer));
2.socket.ReceiveBuf(y1, sizeOf(integer));
只有1 句会执行,客户端两次发来的数据都是 x1 接收了,最后 x1 的值是
后发来的数据,

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部