Прослушивать сокет асинхронно, но также можно отправлять и на сокет в c # - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно прослушать асинхронный сокет, однако я также хочу иметь возможность отправлять данные обратно через тот же сокет, но я бы постоянно зависал в цикле while.Как мне продолжать слушать, но иметь возможность отправлять данные обратно через сокет?Вот код, который у меня есть для асинхронного соединения и прослушивания.

            sock1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            IAsyncResult result;

            result = sock1.BeginConnect(Host1, Comm.PortInt, null, null); 

            bool success = result.AsyncWaitHandle.WaitOne(1000, true);

            if (!success)
            {
                sock1.Close();
                throw new Exception("Could not connect to " + Host);//baseDissConnects
            }


            sock1.SendTimeout = 1000;
            sock1.ReceiveTimeout = 1000;
            //sock1.Connect(Host1, Comm.PortInt);
            sock1.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveBuffer, 512 * 1024);

            while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape)) //cool way to exit
            {
                if (IsConnected(sock1))
                {
                    if (sock1.Available > 0)
                    {
                        ProcessResponse(sock1);
                    }
                }
            }

Любая помощь будет признательна, так как я не уверен, что мне нужно сделать это с помощью многопоточности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...