public void StartReadingData(IAsyncResult ar) { StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; Socket sender = state.sender; int bytesRead = handler.EndReceive(ar); if (bytesRead > 0) { IPEndPoint endpoint = socketBuilder.getLocalEndpoint(Destination); sender.BeginConnect(endpoint, new AsyncCallback(ConnectToNextNode), sender); connectDone.WaitOne(); try { sendData(sender, state.buffer); sendDone.WaitOne(); sender.Shutdown(SocketShutdown.Both); sender.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } //TODO wprowadzić jakąś sekwencje końcową albo ograniczoną liczbębajtówktórą będziemy przesyłać //Tu może wystąpić błąd związany ze zbyt dużm blokeim danych dlatego przyda się else który wywoła jeszcze raz StartReadingData }
public void sendData(byte[] dataToSend) { Socket sender = socketBuilder.getTcpSocket(); sender.DontFragment = true; IPEndPoint endpoint = socketBuilder.getLocalEndpoint(outputPort); try { sender.BeginConnect(endpoint, new AsyncCallback(ConnectToNextNode), sender); connectDone.WaitOne(); sendData(sender, dataToSend); sendDone.WaitOne(); sender.Shutdown(SocketShutdown.Both); sender.Close(); } catch (Exception ex) { } }
public void StartReadingData(IAsyncResult ar) { StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; //odzyskanie handlera Socket sender = state.sender; int bytesRead = handler.EndReceive(ar); logProggress("Reading data finished"); if (bytesRead > 0) { IPEndPoint endpoint = socketBuilder.getLocalEndpoint(networkNodeServer); sender.BeginConnect(endpoint, new AsyncCallback(ConnectToNextNode), sender); connectDone.WaitOne(); sendData(sender, state.buffer); sendDone.WaitOne(); sender.Shutdown(SocketShutdown.Both); sender.Close(); } //TODO wprowadzić jakąś sekwencje końcową albo ograniczoną liczbębajtówktórą będziemy przesyłać //Tu może wystąpić błąd związany ze zbyt dużm blokeim danych dlatego przyda się else który wywoła jeszcze raz StartReadingData }