各位大侠,救命呀!郁闷好多天了。
我用delphi2006的tcpclient和tcpserver远程通讯,现在通讯没有问题,能正常收发信息。
我现在要做的是,使用tcpclient端发送一个字符串给tcpserver端,比如:“stop”或“play”。tcpserver端接到后(在Execute事件中)判断接到的内容,如果是stop,那就控制mediaplay停止,如果是play,那就开始播放。
可现在不知道为什么不能控制mediaplay播放或停止。我在tcpserver端,把播放或停止命令(mediaplay.stop)放在button的click事件中,手动点击button就能正常控制,可是把控制命令(mediaplay.stop)放在tcpserver的execute事件中,判断tcpclient端发送过来的字符串,再去播放或停止,死活就是不好使。
求求各位大侠了,帮帮我吧。
哪位大侠做过这方面的东东,帮帮我。

解决方案 »

  1.   

    execute中收到发过来的信息了,我用if语句进行判断,然后执行mediaplay.stop,但是就是不停止。如果在button的click事件中写mediaplay.stop,就能停止播放。唉,各位帮帮我吧!
      

  2.   

    tcpserver 本身是多线程的,你看一下是否和此有关.你用Button.click那个和你的播放东东是一个线程内,都在主线程内也许和此有关吧,仅供参考
      

  3.   

    一个是线程你要注意的。
    另外一个是:你可以发送一个命令给客户端,录入‘stop’,当然具体发送什么命令在客户端和服务端都约定好。然后在客户端根据服务器发送的的命令再执行mediaplay.stop内容。
    或者你把命令内容放在stream中,读到后解析到对象语言实现。
      

  4.   

    我碰到过这个情况。单击button的click事件就能执行。放到tcpserver的execute事件中就不执行。后来发现两个事件就差一个sender:tobject。所有,后来用了一个timer,将调用的方法放在timer中,并且置为false,当接收到命令后,启动timer,判断,然后执行。就好使了。
    现在还不是很明白,但是至少好使了。你试一试吧。