如何获得 socket 监听队列的最大允许长度?

xade 2005-03-18 04:24:18
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Bind(new IPEndPoint(IPAddress.Any, 19999));
object o = s.GetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.MaxConnections);


在 GetSocketOption 这句抛出异常:
未处理的“System.Net.Sockets.SocketException”类型的异常出现在 system.dll 中。
其他信息: 提供了一个无效的参数。


如果 SocketOptionLevel 使用其他枚举值也会抛出异常:
未处理的“System.Net.Sockets.SocketException”类型的异常出现在 system.dll 中。
其他信息: 在 getsockopt 或 setsockopt 调用中指定的一个未知的、无效的或不受支持的选项或层次。



第二句的绑定 socket 操作不论是否执行都会得到这个结果,搜 google 也没搜出什么有用的结果来...
...全文
457 点赞 收藏 14
写回复
14 条回复
conan19771130 2005年04月18日
关注
回复 点赞
alison 2005年04月13日
参阅http://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_fxnetwork/html/5ef9fe4b-8d3d-490e-9259-1d014b2181af.asp
回复 点赞
nga96 2005年04月07日
UP
回复 点赞
xade 2005年03月26日
up
回复 点赞
xade 2005年03月23日
up
回复 点赞
xade 2005年03月22日
呃,我问的是如何“获得”socket 监听队列的最大允许长度,不是如何“设置”。。。
回复 点赞
kuzhuxuan 2005年03月21日

/// <summary>
/// 启动服务
/// </summary>
public void Start()
{
if(this._IsStart)
throw new InvalidOperationException();
_socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
_socket.Bind(new IPEndPoint(IPAddress.Any,_port));
_socket.Listen((int)System.Net.Sockets.SocketOptionName.MaxConnections); //应该在此指定连接数
_IsStart=true;
ThreadPool.QueueUserWorkItem(this._onStart);
}
回复 点赞
xade 2005年03月20日
up
回复 点赞
weigar 2005年03月19日
帮你顶下
回复 点赞
SZY_JZM 2005年03月19日
up
回复 点赞
xade 2005年03月19日
再up...
回复 点赞
xade 2005年03月18日
up
回复 点赞
xade 2005年03月18日
已经知道监听队列最大只能到 5 是操作系统版本的原因,在 2k3 上无这个限制,其他的 Server 版应该也没有限制或者限制的数目不同。但是在 2k3 上调用

object o = s.GetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.MaxConnections);

仍然产生异常,现象同上。。。
回复 点赞
xade 2005年03月18日
在 Listen 方法中指定任何大于 5 的参数都无效,监听队列最大只能到 5,这是为什么?
回复 点赞
发动态
发帖子
C#
创建于2007-09-28

8.5w+

社区成员

64.0w+

社区内容

.NET技术 C#
社区公告
暂无公告