C#写SOCKET非阻塞的方法

chichenzhe 2010-04-28 12:27:21
简单介绍写法就行.

我以前接触过最深入的C# socket操作也就限于 和中国移动做短信交互. 就算复杂但这也是 client啊
最近我开始做java.
发现java的 socket非阻塞非常好用,网上例子也一大把.

基本模式也就是 select 的 selectkey ,然后根据通道状态进行工作.
比如:

if (selectionkey.isAcceptable()){...}
else if(selectionkey.isReadable()){...}
else if(selectionkey.isWritable()){...}
上面就是核心代码了.很简约,看起来也一目了然.


C#我查了半天也查不到 selector类,也没有什么selectionkey . 仅仅有一个socket.Blocking可以被设置成false;但这也没用啊,具体 C# 的socket 非阻塞代码怎么写呢?

在网上找的 socket例子也都限于 多线程+阻塞 模式. 这不是我想要的.
...全文
2371 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdyaicxy 2011-02-19
  • 打赏
  • 举报
回复

byte[] buffer ={ 1, 2, 3, 4, 5, 6, 7, 8 };

IPAddress IPA = IPAddress.Parse(thisIP);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPEndPoint ipep = new IPEndPoint(IPA, 3000);
s.Bind(ipep);
s.Blocking = false;// 这个就是设置非阻塞
s.Listen(3);
Socket client = s.Accept();
client.Send(buffer);
s.Close();
Console.WriteLine("firServer");
Adechen 2010-04-28
  • 打赏
  • 举报
回复
没有写过Socket方面的,学习下
皇城龙三 2010-04-28
  • 打赏
  • 举报
回复
SocketInformationOptions的成员NonBlocking 标志 Socket为非阻塞
chichenzhe 2010-04-28
  • 打赏
  • 举报
回复
麻烦斑竹帮忙移到 C#讨论区,可能发错地方了.

最近C#讨论区无法点击左侧栏打开... 我下午才知道直接输入URL可以访问
chichenzhe 2010-04-28
  • 打赏
  • 举报
回复
没人回答啊!!!
chichenzhe 2010-04-28
  • 打赏
  • 举报
回复
来人啊...

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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