最近碰到一个怪现象:
我用ClientSocket做的东东去联接ServerSocket,当我进行ClientSocket.Active:=true时ServerSocket的OnAccept事件中有响应,而当我用ClientSocket的SendBuffer去发送信息时出现怪事:如果ClientSocket.Active:=true这句话同ClientSocket.SendBuffer放在一起按顺序一次性执行则服务端没有响应如果将这两句话分别放在两个按钮事件中,先点击一个按钮,再点击另外一个按钮则服务端就有响应,而将两个按钮事件通过一个过程一次性按顺序执行(只通过一次点击)又不行了,真是搞不懂是什么原因有哪位大侠帮帮解决此问题呀,不胜感谢!
我用ClientSocket做的东东去联接ServerSocket,当我进行ClientSocket.Active:=true时ServerSocket的OnAccept事件中有响应,而当我用ClientSocket的SendBuffer去发送信息时出现怪事:如果ClientSocket.Active:=true这句话同ClientSocket.SendBuffer放在一起按顺序一次性执行则服务端没有响应如果将这两句话分别放在两个按钮事件中,先点击一个按钮,再点击另外一个按钮则服务端就有响应,而将两个按钮事件通过一个过程一次性按顺序执行(只通过一次点击)又不行了,真是搞不懂是什么原因有哪位大侠帮帮解决此问题呀,不胜感谢!
解决方案 »
- 获得一个变量的指针,也取到这个变量的值了,怎么改变这个变量的值?
- 动态库中得到Frame实例,为什么不能Show
- 问一个 PrintDBGridEH 打印的问题
- 一个很头疼的问题(类的相互调用)
- 在DBGridEh组件使升降排序标志符(▽降序△升序)为黑色
- 在TClientDataset.commandtext写sql语句,如果出错的,异常处理代码如和写?
- ◆◆ 关于DELPHI属性编辑器的Grid ◆◆
- Win32.klez.foroux是个什么东西?
- 急求delphi6序列号和受权号!!!
- 数据库的操作
- 100分求AcReport For Delphi2007的控件。
- 如何给flash文件加密?
ClientSocket.Active:=true;时后,只是通知系统,打开这个Socket,但是还没有真正连接上,只有OnConnect事件产生后,才真正的连接上了,这时候就可以SendBuffer了。放在2个按扭中,是因为有操作的时间延时,中间系统能够处理消息,把Socket打开,并且连接上,自然可以SendBuffer了。你要在OnConnect事件产生后才能发送接收数据。
越用越不爽.后来换成idTCPCLient了.
ClientSocket,Borland都说要放弃了.建议还是换掉吧.
发送数据应该在OnWrite事件激发之后再进行,否则,会出现无法预测的结果(有时准备好了,就成功了,有时未成功,就失败)。另外必须注意:ClientSocket发几个Send,Serversocket并不一定出现几个OnRead事件,因为底层的发送要根据数据量、缓冲区大小等因素决定是否把数据送出。所以,对于TServersocket端,要处理好数据接收是否完整及粘包问题。