您好、欢迎来到现金彩票网!
当前位置:秒速牛牛开奖 > 通道命令字 >

请问服务器如何通过已建立的tcpip通道主动发送消息给客户端?

发布时间:2019-06-19 02:21 来源:未知 编辑:admin

  2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二

  tcp长连接(就是创建了连接之后,不要随便关闭)本来就是双向的,任何一端都可以给另外一端发送消息。至于你说的”服务器与客户端是三个独立的线程“这就太糊涂了,你肯定是被一些垃圾作者给蒙蔽了,这跟线程没有半毛钱关系,你是搞什么”死循环+阻塞“的代码了吧?

  一旦创建连接,比如说服务器端就有了对应于客户端的TcpClient,那么把这个对象实例可以保存起来,需要发送信息时就按照索引找出对应通道的TcpClient,直接调用其发送消息命令。而接收消息也应该是异步、事件驱动的,没有消息到来时不占用任何线程。哪来的什么”三个线个客户端,在没有收发消息时也不占用任何线个线程在那里”死循环+阻塞“着?

  这样发送端在之前异步发送命令之后,应该保存一段时间消息会话,等收到返回消息时则找出保存的会话中的回调委托,将收到的返回对象作为委托参数,回调委托。比如说发送端发送消息1、2、3、4、5,那么另外器(因为是并发多线程处理的)可能按照顺序2、5、3、1、4的次序返回结果。

  按说只要是连接完成,那么任何一方都可以主动发送消息,等待对方接收。但是许多业务中,服务器经常比较繁忙,所以服务器可以简化设计,服务器可以仅仅给客户端单方向推一个主动消息,而从不处理客户端的返回。但总之这是信令设计问题,是最低级的tcp通讯机制搞一个级别的设计问题。

  2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二

  当发送消息时,就是找出对应的tcpclient对象,直接调用其发送消息的方法。当接收消息的时候,自然是捕获了相关的消息到来的事件并且开始处理。这里首先根本没说什么线程。

  tcp长连接(就是创建了连接之后,不要随便关闭)本来就是双向的,任何一端都可以给另外一端发送消息。至于你说的”服务器与客户端是三个独立的线程“这就太糊涂了,你肯定是被一些垃圾作者给蒙蔽了,这跟线程没有半毛钱关系,你是搞什么”死循环+阻塞“的代码了吧?

  一旦创建连接,比如说服务器端就有了对应于客户端的TcpClient,那么把这个对象实例可以保存起来,需要发送信息时就按照索引找出对应通道的TcpClient,直接调用其发送消息命令。而接收消息也应该是异步、事件驱动的,没有消息到来时不占用任何线程。哪来的什么”三个线个客户端,在没有收发消息时也不占用任何线个线程在那里”死循环+阻塞“着?

  这样发送端在之前异步发送命令之后,应该保存一段时间消息会话,等收到返回消息时则找出保存的会话中的回调委托,将收到的返回对象作为委托参数,回调委托。比如说发送端发送消息1、2、3、4、5,那么另外器(因为是并发多线程处理的)可能按照顺序2、5、3、1、4的次序返回结果。

  按说只要是连接完成,那么任何一方都可以主动发送消息,等待对方接收。但是许多业务中,服务器经常比较繁忙,所以服务器可以简化设计,服务器可以仅仅给客户端单方向推一个主动消息,而从不处理客户端的返回。但总之这是信令设计问题,是最低级的tcp通讯机制搞一个级别的设计问题。

  你的服务器,接到这些东西后,只需做AllClients.Group[A].Talk(hello)或者AllClient.Where(p=p.id==001).Talk(滚)

  @以专业开发人员为伍非常感谢您的回答,我收益匪浅,只是本人水平有限,希望能看到更多的代码实现,但是又觉得让您给贴出完整的代码来有点要求过分,您看能告诉我一个搜索的方向吗?比如从百度里搜什么关键词,能找到类似的程序实例代码?当然如果您能给出实际代码,那就更加的万分感谢了。

  我不太明白的就是:“一旦创建连接,比如说服务器端就有了对应于客户端的TcpClient,那么把这个对象实例可以保存起来,需要发送信息时就按照索引找出对应通道的TcpClient,直接调用其发送消息命令”这部分怎么实现?

  2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二

  请问你说客户端和服务器实时通讯发送数据,通过tcp,你说是客户端收到信息后返回一个应答,然后服务器在发消息,就是应答式,还是服务器一直在那里给客户端一直发,哪种方式比较好啊?

  什么叫做”哪种方式比较好“啊?这是一个基础理解不同的问题。任何一端都可以发5个消息,或者更多的消息。有些人只记住了”发消息、然后死循环读取返回值“这种msdn上最垃圾的语法demo程序了。这不是真正的有效率的异步通讯设计方式,这只是介绍最基本的语法而已。

  任何一端随时都可以发送消息,这是通讯最起码的概念,跟上一个发送的消息有没有曾经收到过返回值无关。不是什么死循环+阻塞方式。

  2012年2月 多媒体/设计/Flash/Silverlight 开发大版内专家分月排行榜第二

  信令设计本身,应该有个”流水号“。返回消息本身,也有一个标记了是哪一个流水号的返回消息的流水号。

  如果没有编号概念你可以看到产生什么恶果?就是脑子转不动了,只知道阻塞而死等上一个消息返回了。

  请问大神们,如何将客户端访问的TcpClient实例保存起来?想用的时候又如果去查找调用?请大神们给点代码可否,没有搜到相应的代码,不知道如何去写啊?

  请问大神们,如何将客户端访问的TcpClient实例保存起来?想用的时候又如果去查找调用?请大神们给点代码可否,没有搜到相应的代码,不知道如何去写啊?

http://4kci.com/tongdaominglingzi/259.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有