socket通讯的调试问题,请君解惑!!!(200分)

  • 主题发起人 主题发起人 njhuadong
  • 开始时间 开始时间
N

njhuadong

Unregistered / Unconfirmed
GUEST, unregistred user!
通讯程序代码如下:
ClientSocket1.Active := true;
myclientsockets:=twinsocketstream.Create (clientsocket1.socket,30000);
myclientsockets.WaitForData (1000);
//......将要传送的数据放入sndbuffer中
myclientsockets.write(sndbuffer,length(sndbuffer));
myclientsockets.WaitForData(1000);
myclientsockets.read(rcvbuffer,128);//将serversocket发回的数据取到rcvbuffer中
myclientsockets.Free;
ClientSocket1.Active := false;
每次执行到 myclientsockets.write(sndbuffer,length(sndbuffer)) 时,系统总是跳出CPU
调试窗口,然后就没有了响应,服务端能接收到客户端传来的数据,但无法正常返回。
以前遇到这种情况重装一下系统就可以了(重装DELPHI无效),
现在重装后很短时间内可用(WINDOWS 2000系统中所装软件有KV3000,OFFICES XP,WINRAR和DELPHI)
,很快就不可用了。请高手回答
 
需要加“^”
myclientsockets.write(sndbuffer^,length(sndbuffer));
否则发送的是指针。
 
read里面一样。
 
同意楼上
 
同意远帆
 
var srvbuffer,rcvbuffer : array[0..100] of char
它们并不是string型的
 
而且同样的程序在一台正常的机器上是可以调试通过的
 
哦,那如果方便,把你的程序寄给我试试?
yuan-fan@21cn.com
没用第三方控件吧?
 
怎么没有人回答呀,我可以加分的
 
write(sndbuffer,SizeOf(sndbuffer));
还有你检查错误没有啊?
 
申明:在其他正常的机器上工作是正常的,调试也是正常的
 
数据包长度问题,可以判定程度
 
我也想知道
 
我想可能是操作系统的原因,但不知如何修复,请高手指教
 
把你的程序寄给我用一下,好吗?
rlpcdk@163.com
 
后退
顶部