当前位置:编程学习 > C#/ASP.NET >>

socket服务器

在做一个socket的通讯服务器时候,每个socket是用同步好还是用异步的模式好?,最好能稍微说点理由 --------------------编程问答-------------------- --------------------编程问答-------------------- 异步啊
不然你在接收一个连接后
怎么才能同时完成继续监听呢
--------------------编程问答-------------------- 也可以做成同步的

不过最后结果都是在客户端开多个线程,每个线程一个socket

和异步一样 --------------------编程问答-------------------- 都可以 --------------------编程问答-------------------- 如果你的客户端连接不是很多,通讯不是很频繁,就做成同步的,毕竟同步编码简单
反之做成异步的,这样客户端的连接请求和通讯请求就不会堆积阻塞了。

看看下面的解释:
1.所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。
    异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。  
2.同步,就是实时处理,比如服务器一接收客户端请求,马上响应,这样客户端可以在最短的时间内得到结果,但是如果多个客户端,或者一个客户端发出的请求很频繁,服务器无法同步处理,就会造成涌塞。  
   异步,就是分时处理,服务器接收到客户端请求后并不是立即处理,而是等待服务器比较空闲的时候加以处理,可以避免涌塞。  


3.同步、异步之经典解释
     同步就是调用一个函数,直接函数执行完了才返回到调用函数
     异步就是被调用函数初始化完后马上返回... 


经典解释一:
     同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 
     异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。


经典解释二:
     同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
     异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕 


经典搞笑解释:
      同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
     异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。 



--------------------编程问答-------------------- --------------------编程问答-------------------- 五楼说的太好了!!顶!!! --------------------编程问答--------------------
引用 7 楼 luohongping520 的回复:
五楼说的太好了!!顶!!!


多谢,不过只有前两句是我写的,后面的是copy的。。。。。。 --------------------编程问答-------------------- isjoe
说的挺详细的。
我现在是用同步,线程池管理。每个socket一个线程,还不知道能连多少个socket。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,