【问题标题】:System.Net.Sockets.SocketException: 'An invalid argument was supplied'System.Net.Sockets.SocketException:“提供了无效的参数”
【发布时间】:2017-08-28 15:39:13
【问题描述】:

System.Net.Sockets.SocketException: '提供了一个无效的参数'

_socket.Connect(Dns.GetHostAddresses("vcap.me"), 1832);

完整代码:

namespace App.Root.Core.Network.Sockets
{
    class SocketHandler
    {
        private readonly Socket _socket;
        private readonly Timer _timer;

        public SocketHandler()
        {
            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _timer = new Timer(OnTick, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1));
        }

        private void Connect()
        {
            if (IsConnected())
            {
                return;
            }

            _socket.Connect(Dns.GetHostAddresses("vcap.me"), 1832);
        }

        private bool IsConnected()
        {
            return !((_socket.Poll(1000, SelectMode.SelectRead) && (_socket.Available == 0)) || !_socket.Connected);
        }

        private void OnTick(object obj)
        {
            if (!IsConnected())
            {
                CoreUtilities.LogToConsole("Connecting to the server...");
                Connect();
            }
        }
    }
}

我所做的只是初始化 SocketHandler 构造函数。

【问题讨论】:

    标签: c# .net sockets


    【解决方案1】:

    问题是 Timer 正在创建一个单独的线程,它正忙于处理第一个线程,因此它无法在第二个线程内连接。

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 2023-03-09
      • 2018-10-23
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多