Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

TCP Odbieranie Asychronicznie


Rekomendowane odpowiedzi

Opublikowano


public void start()

{

try

{

TcpClient connectionStream = new TcpClient("tu.wpisz.ip.serwera", tu_wpisz_port);

stream = connectionStream.GetStream();

PacketListen = new Thread(new ThreadStart(ListenThread));

PacketListen.Start();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

}

public void ListenThread()

{

//dowolny kod

}

57199140501148694665.png

Opublikowano

Jest coś takiego jak

NetworkStream.BeginRead(...);

Lecz nie wiem jak to użyć..

Tutaj jest przykład http://msdn.microsoft.com/pl-pl/library/system.net.sockets.networkstream.beginread%28v=vs.110%29.aspx Lecz dużo mi on nie mówi..

 

@Edit

Zrobiłem coś takiego:

    void ReceiveData(IAsyncResult iar)
    {
        int recv = ns.Read(data, 0, data.Length);
        string stringData = Encoding.ASCII.GetString(data, 0, recv);
        Console.WriteLine(DateTime.Now.ToString("HH:mm:ss") + "> Odbieram: " + stringData);
        data = new byte[data.Length];
        //Console.WriteLine(recv + "> " + stringData);
        ns.BeginRead(data, 0, data.Length, new AsyncCallback(ReceiveData), ns);
    }

A po połączeniu dałem:

ns.BeginRead(data, 0, data.Length, new AsyncCallback(ReceiveData), ns);

Ustawiłem

Thread.sleep(500);

a także aby wysyłało mi 1, 2, 3, itp. Czyli 2 liczby na sekunde. (1/ 0,5s)

Lecz teraz Serwer wysyła, a Client odbiera 1 liczbe na sec. Jak to naprawić?

Jeżeli Serwer będzie wysyłał z prędkością 4/s. To Client będzie gubił 3/4 danych ... :x

  • 1 miesiąc temu...
Opublikowano

Programuje w Visual Basic, ale napisze najbardziej zblizony kod a ty sobie poprawisz:

 

void Start()

{
   private TCPClient Client;
   TCPClient.connect(IP, Port); //Łaczenie itp... użyj (Try)
   TCPClient.BeginReceiveAsync(Buffer, 0, Buffer.Length, new AsyncCallBack(Address of OnReceive), TCPClient)

}

void OnReceive(IAsyncResult arg)
{

 

   w buferze jest wszystko

 

   TCPClient.BeginReceiveAsync(Buffer, 0, Buffer.Length, new AsyncCallBack(Address of OnReceive), TCPClient)
}

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...