C# Socket的Send问题

C# Socket的Send问题
C#中Socket的Send方法即使是在阻塞模式下也会立即返回,查了不少资料,都没什么结果,最后在MSDN找到了答案。
Send的发送默认是不带参数的,其实是写入了本地缓存区,然后基础系统拆分后分批次发送。如果想要实现真正的阻塞,需要使用SocketFlag参数
但SocketFlag参数在baidu和google并没有很多描述,反倒是MSDN有一些详细的例子,现在把代码贴上来,一看便知
// Displays sending with a connected socket// using the overload that takes a buffer, message size, and socket flags.public static int SendReceiveTest3(Socket server){    byte[] msg = Encoding.UTF8.GetBytes("This is a test");    byte[] bytes = new byte[256];    try     {        // Blocks until send returns.        int i = server.Send(msg, msg.Length, SocketFlags.None);        Console.WriteLine("Sent {0} bytes.", i);        // Get reply from the server.        int byteCount = server.Receive(bytes, server.Available,                                            SocketFlags.None);        if (byteCount > 0)            Console.WriteLine(Encoding.UTF8.GetString(bytes));    }    catch (SocketException e)    {        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);        return (e.ErrorCode);    }    return 0;}

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部