Не удается отправить запрос Tcp после подключения к Wi-Fi через код в android 10 - PullRequest
0 голосов
/ 25 февраля 2020

Когда я подключаю мобильное устройство к Wi-Fi через код, соединение успешно, но не может отправить tcp-запрос после подключения к этой сети.

Ошибка:

Система. InvalidOperationException: Операция не разрешена для неподключенных сокетов .02-25 17: 02: 21.290 I / mono-stdout (14426):

Вот мой код:

public static TResponse SendMessage<TResponse, TRequest>(TRequest Model,string lanip)
        {
            const int bytesize = 2048 * 2048;
            try // Try connecting and send the message bytes  
            {
                var jsonStr = JsonConvert.SerializeObject(Model);
                var messageBytes = System.Text.Encoding.UTF8.GetBytes(jsonStr);
                Console.WriteLine("Request:"+Encoding.UTF8.GetString(messageBytes, 0, messageBytes.Length));


                var client = new TcpClient();
                var result = client.BeginConnect(lanip, 5555, null, null);
                var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(3));
                if (!success)
                {
                    //throw new Exception("Failed to connect.");
                    return default(TResponse);
                }
                else
                {
                    //TcpClient client = new System.Net.Sockets.TcpClient(lanip, 5555); // Create a new connection  
                    NetworkStream stream = client.GetStream();
                    client.SendTimeout = 2000;
                    client.ReceiveTimeout = 8000;
                    stream.Write(messageBytes, 0, messageBytes.Length); // Write the bytes  
                    messageBytes = new byte[bytesize]; // Clear the message   
                                                       // Receive the stream of bytes  
                    stream.Read(messageBytes, 0, messageBytes.Length);
                    string str = Encoding.UTF8.GetString(messageBytes, 0, messageBytes.Length);
                    var responseModel = JsonConvert.DeserializeObject<TResponse>(str);
                    Debug.Write(str);
                    client.Close();
                    stream.Dispose();
                    return responseModel;
                }


            }
            catch (Exception e) // Catch exceptions  
            {
                Console.WriteLine(e);
            }
            // Return response  
            return default(TResponse);
        }
...