none
服务器与客户端通信的问题? RRS feed

  • 问题

  • 构想的通信方式:

    首先服务器侦听连接-->客户端连接到服务器(双方各用一个套字节建立起连接)-->双方各用一个线程循环接收对方的数据-->当对方的数据到达时,根据数据内容作相应处理

    问题:
    1、按这种方式,数据处理不是都在一个地方了吗(不过问题不大,有无更好的方法)?
    2、如果要求对方做出响应,而自己又要获取响应的话比较麻烦,比如说:
    客户端发送消息给服务器,要求获取服务器的计算机名-->服务器收到消息,获取自己的计算机名,并发送给客户端-->那么客户端收到的消息,不也是在循环里面吗,我如果要在其它地方显示或者未知的地方显示,不是很不方便吗?

    总觉得这种方式不行,有更好的方式吗?
    2008年10月31日 3:43

答案

  •  feiyun0112 写:
    定义一个事件,收到消息时出发事件,发消息传出去

     


    事件虽然可以解决这个问题,但如果有太多这种操作,使用起来不方便,又要动态绑定事件,用完后又要移除,还有如果一个操作有时间限制,在循环里面也不好做超时呀?


    我认为,是不是应该改用两个套字节进行通信?

    套字节一:服务器端在这边循环接收客户端数据并处理,但客户端并不循环接收,只在需要时接收数据。客户端要请求什么东西,就用这个套字节向服务器发送请求,然后等待数据(如果等待多少秒以后还未收到,就是操作超时了)---->服务器找到相应数据并回复给客户端

    套字节二:与套字节一类似,不过要将服务器和客户端的职能倒转。

    这样就不需要事件了,发送完后立即接收,感觉使用起来更简单,不知道这样的方式是否可行?
    2008年10月31日 7:23

全部回复

  • 定义一个事件,收到消息时出发事件,发消息传出去

     

    2008年10月31日 4:37
    版主
  •  feiyun0112 写:
    定义一个事件,收到消息时出发事件,发消息传出去

     


    事件虽然可以解决这个问题,但如果有太多这种操作,使用起来不方便,又要动态绑定事件,用完后又要移除,还有如果一个操作有时间限制,在循环里面也不好做超时呀?


    我认为,是不是应该改用两个套字节进行通信?

    套字节一:服务器端在这边循环接收客户端数据并处理,但客户端并不循环接收,只在需要时接收数据。客户端要请求什么东西,就用这个套字节向服务器发送请求,然后等待数据(如果等待多少秒以后还未收到,就是操作超时了)---->服务器找到相应数据并回复给客户端

    套字节二:与套字节一类似,不过要将服务器和客户端的职能倒转。

    这样就不需要事件了,发送完后立即接收,感觉使用起来更简单,不知道这样的方式是否可行?
    2008年10月31日 7:23
  • 如果是多个客户端对于一个服务端的。

    双方都打开两个端口号,一个用于发送,一个用于接收。

    双方都建立一个资料库,记录发送消息的时间,内容,收到反馈的时间。

    每间隔一段时间时间扫描一下资料库,看看是否有没有收到反馈的信息,没有则再发送一遍或不再发送。

     

    2008年11月4日 10:05