我要实现的是,就像是ajax那样的交互,不同的是后台是通过socket在处理,比如在页面点击了一个按钮后,就跟后台建立了tcp连接,然后在页面可能会点击按钮,也或者是选择一个复选框等,这些操作都会通过socket发送数据到后台去处理,然后服务器端处理完把结果返回回来。    后台的socket server端是用c语言写的,前台的话,js等应该是做不到的,所以我就打算用php了。    php里有创建socket的函数,socket_write是用来发送数据的,但是php是一行行执行的,所以要发送数据到服务器端的话,就要全部一行行的写到php语句里,比如先发送a,再发送b,再发送c,就要事先写在代码里去,但是我什么时候发送什么数据到服务器端是不可预计的,没办法直接写到php代码里去,要看用户点了那个按钮,做了什么交互来决定。
  
    我想问下我这种要求要怎么实现?
  
    我自己还有个想法,就是建立了连接以后,如果用户点击了按钮要发送数据到服务器端,就用ajax,但是ajax请求的那个php页面里没有socket这个资源了,也没用用,socket也不能注册成session,没办法传递过去。所以还是没有办法实现。    不知道我有没有说清楚。。先谢谢大家了~
    
    

解决方案 »

  1.   

    可不可以这样,每次请求都连接一次socket server.因为http协议就是这样的,页面运行完,socket连接也就释放了。
      

  2.   

    1、建议客户端也用c写个客户端程序,既然楼主熟悉c,用c即可。
    2、若用php和javascript判断用户选择根据选择提交数据。
    3、用form也可实现交互功能,将客户端信息发服务器端。
      

  3.   

    有个想法,不知道可不可以。
    开两个临时文本文件,一个存发送命令,一个存接收信息,文件名与每次socket连接的ip+端口相呼应。
    假设你的页面有 "连接","命令1","命令2" 3个按钮,点击连接,ajax发送请求到php请求socket的页面,从c socket server那边返回一个ip+端口的串给php端,php利用这个串建立以上描述的两个文件,并存入session,然后while(true){不停的从相应的发送命令文本文件读取最新的命令},而页面的命令1,命令2按钮则是请求到另一个php文件,写入命令到发送命令的文本文件,可能需要sleep下,再从接收信息文件读取返回信息。
      

  4.   

    while(true){不停的从相应的发送命令文本文件读取最新的命令,并将返回信息写入接收信息的文件}
      

  5.   

    而页面的命令1,命令2按钮则是请求到另一个php文件,利用session里的ip+端口写入命令到相应的发送命令的文本文件,可能需要sleep下,再从接收信息文件读取返回信息。
      

  6.   

    建议使用 flash 客户端嵌一个 flash 所有 socket 链接有 flash 实现..JS 交互
      

  7.   

    我发现我天真了,第一步就实现不了。当我没说吧。
    flash应该能够胜任。
      

  8.   

    php 是在服务器运行的。不可能实现Socket 的。
    想想其它办法吧,如上面说的flash
      

  9.   

    php 也是在服务器端执行的,想和客户端通讯要通过js呢,之前也做过一个限制ip的程序用得js实现的!