TCP-клиент C # UWP - PullRequest
       2

TCP-клиент C # UWP

0 голосов
/ 26 января 2019

Я пытаюсь создать TCP-клиент в приложении UWP. Я могу создать клиента без проблем. Проблема в том, что мне нужно постоянно слушать все, что удаленное устройство отправляет обратно, например приглашение на вход. Я также пытался использовать Stream Socket, но он прослушивает только входящие. Цель состоит в том, чтобы открыть соединение, отправлять и получать на это удаленное устройство только для соединения. Я перепробовал много вариантов, которые нашел в Интернете, но безуспешно.

Основы связи:

  1. Подключитесь к удаленному устройству и оставайтесь на связи.
  2. Ожидание подсказок (которые могут быть медленными).
  3. Отправить обратно логин в информации
  4. Получить авторизированное подтверждение
  5. Оставайтесь на связи, непрерывно отправляйте и получайте данные.

Любая помощь будет отличной.

1 Ответ

0 голосов
/ 27 января 2019

Я смог заставить его работать правильно с этим:

   private TcpClient client;
    private NetworkStream recieveData;
    private Task rx;

    public delegate void DataRecived(string data);
    public event DataRecived OnDataRecived;

    public delegate void ConnectionStatus(bool data);
    public event ConnectionStatus clientConnected;

    public delegate void LogStatus(bool data);
    public event LogStatus loggedIn;

    public delegate void ValueChanged(int value);
    public event ValueChanged newLightValue;

    public string Ip;
    public int Port;

    private bool auth;
    public bool valueInChanging;
 public Client()
    {
       client = new TcpClient();
       rx = new Task(StartReading);
    }
    public async void Connect()
    {
        try
        {
            await client.ConnectAsync(Ip, Port);
            clientConnected(client.Connected);
            rx.Start();                                  
        }
        catch (Exception ex)
        {
            OnDataRecived("Error Connecting" + ex.ToString());
        }
    }

    private void StartReading()
    {
        while (true)
        {
            recieveData = client.GetStream();
            byte[] bytes = new byte[1024];
            Byte[] data = new Byte[256];
            string responseData;
            if (recieveData != null)
            {
                int bytesRead = recieveData.Read(bytes, 0, bytes.Length);
                responseData = System.Text.Encoding.ASCII.GetString(bytes, 0, bytesRead);
                if (!auth)
                {
                    OnReceivedMessage(responseData);
                }
                else
                {
                    Feedback(responseData);
                }
            }
        }           
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...