一个简单的C#&socket的问题,请教高手

burnyxu 2004-09-23 11:01:02
小弟刚开始接触socket,关于同步和异步,虽然概念上明白了,可是对他们各适用于哪些具体的程序还是不太懂.
比如我要做一个服务端用来接受客户端发来(一个局域网的许多客户端)的数据并处理(比如写入数据库),这个用同步和异步哪个呢?
如果我用同步,新建一个线程来接受和处理(不用主线程),这样行不行呢?
这样顺序: bind()--listen()--accept()--处理




如果一时间很多客户端发来数据,那个线程处理不过来,数据会不会丢失还是存在那个接受队列里呢?

问题比较多,但是对高手来说应该很简单,希望不吝赐教,谢谢了!
...全文
140 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
The123 2004-09-23
  • 打赏
  • 举报
回复
再来
http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter6UsingMultThr.mspx
The123 2004-09-23
  • 打赏
  • 举报
回复
http://tech.ccidnet.com/pub/article/c294_a33440_p1.html
  • 打赏
  • 举报
回复
当同步时,其他请求会等待,只到现在连接中止
而当异步时,会使用treadpool来同时处理多个请求

照你的情况看应该使用后者
wangsaokui 2004-09-23
  • 打赏
  • 举报
回复
比如我要做一个服务端用来接受客户端发来(一个局域网的许多客户端)的数据并处理(比如写入数据库),这个用同步和异步哪个呢?
客户端比较多或数据量比较大的通常用异步处理,因为异步不需要等待就可以返回处理下一个信息,同步的话就只有等待上一个完成了。

如果我用同步,新建一个线程来接受和处理(不用主线程),这样行不行呢?
这样顺序: bind()--listen()--accept()--处理
可以。

如果一时间很多客户端发来数据,那个线程处理不过来,数据会不会丢失还是存在那个接受队列里呢?
看timeout的时间,如果等待大于timeout的时间就会丢失,具体多少我没有查,因为大些的我都用异步处理了。
yingshis 2004-09-23
  • 打赏
  • 举报
回复
up

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧