我在Windows2003下面写了一个Socket的服务程序,能正常运行,到Windows2008和Windows7下面就出错了,错误信息如下:
提供了一个无效的参数
System.ComponentModel.Win32Exception System.Net.Sockets.SocketException
ErrorCode:10022
Message:提供了一个无效的参数
SocketErrorCode InvalidArgument报错在mSocket.Listen(50)这一行,错误信息如上,那位大侠知道原因???????????????????
public void Listen()
{
    try
    {
        if (mSocket == null)
            throw new ArgumentNullException("连接不存在");
        // 监听端口,等待客户端连接请求。50是队列中最多可容纳的等待接受的传入连接数
        mSocket.Listen(50);
        // 开始一个异步操作来接受一个传入的连接尝试
        mSocket.BeginAccept(new AsyncCallback(AcceptCallBack), null);
    }
    catch (Exception ex)
    {
        if (OnLog != null)
        {
            OnLog(new LogEventArgs(ex));
        }
    }
}

解决方案 »

  1.   

    You need to bind the socket to an interface before setting the SocketOptionName.AddMembership option.Edit: Just verified this in the MSDN docs (though it says only up to NT4):
      

  2.   

    50端口已有已接如果不是调试的时候出错,而是程序运行出错,可能是被tcp攻击了
      

  3.   

    虽然是很久以前的贴子了,但是还是抱着国际救援红十字爱心帮助困难人民的态度回一个。listen方法的参数有效值是1到5,lz不看msdn的么