Ejemplo n.º 1
0
 public async Task Run(Func <byte[], int, byte[]> dataManager)
 {
     await IPAddress
     .Parse(WorkflowSocketListenerConfig.IPAddress)
     .ListenToAddress(WorkflowSocketListenerConfig.PortNumber, async(listener) =>
     {
         using (var socket = await listener.AcceptSocketAsync()) {
             var args = new SocketAsyncEventArgs();
             args.SetBuffer(new byte[0x1000], 0, 0x1000);
             var awaitable = new ReceiveSocketAwaitable(args);
             int bytesRead;
             while ((bytesRead = await socket.ReceiveAsync(awaitable)) > 0)
             {
                 var args2 = new SocketAsyncEventArgs();
                 args2.SetBuffer(args.Buffer, 0, bytesRead);
                 var awaiter = new SocketAwaitable(args2);
                 await socket.SendAsync(awaiter);
             }
             socket.Close();
         }
     }).ConfigureAwait(false);
 }
Ejemplo n.º 2
0
        private async Task Sendata()
        {
            try
            {
                using (var socketClient = new Socket(SocketType.Stream, ProtocolType.Tcp))
                {
                    var ea = new SocketAsyncEventArgs
                    {
                        RemoteEndPoint = new DnsEndPoint(WorkflowSendSocketActionConfig.IPAddress, _port)
                    };
                    //socketClient.Connect(IPAddress.Parse(WorkflowSendSocketActionConfig.IPAddress), _port);
                    //IPAddress.Parse(WorkflowSendSocketActionConfig.IPAddress), _port
                    var connectAwaiter = new SocketAwaitable(ea);
                    await socketClient.ConnectAsync(connectAwaiter);

                    Debug.WriteLine("Connected");

                    var send = new SocketAsyncEventArgs();
                    var dat  = Encoding.ASCII.GetBytes("Hello World Again");
                    send.SetBuffer(dat, 0, dat.Length);
                    var awaitable = new SocketAwaitable(send);
                    await socketClient.SendAsync(awaitable);

                    Debug.WriteLine("Sent Completed");

                    int recCount  = 0;
                    var recBuffer = new byte[2048];
                    var receive   = new SocketAsyncEventArgs();
                    receive.SetBuffer(recBuffer, 0, recBuffer.Length);
                    var receiveAwaiter = new ReceiveSocketAwaitable(receive);

                    while ((recCount = await socketClient.ReceiveAsync(receiveAwaiter)) > 0)
                    {
                        Debug.WriteLine($"Received {recCount}");
                        Debug.WriteLine(
                            $"Read through the buffer: {Encoding.ASCII.GetString(recBuffer, 0, recCount)}");
                        recBuffer = new byte[2048];
                    }
                    //while (!socketClient.Connected){}

                    /*var cancel = new CancellationToken();
                     * using (var networkStream = new NetworkStream(socketClient))
                     * {
                     *  networkStream.ReadTimeout = 1000;
                     *  networkStream.WriteTimeout = 1000;
                     *  var dat = Encoding.ASCII.GetBytes("Hello World Again");
                     *  await networkStream.WriteAsync(dat, 0, dat.Length, cancel);
                     *  Debug.WriteLine("Writing");
                     *  int recCount = 0;
                     *  var recBuffer = new byte[2048];
                     *  while ((recCount = await networkStream.ReadAsync(recBuffer, 0, 2048, cancel)) > 0)
                     *  {
                     *      Debug.WriteLine($"Received {recCount}");
                     *      Debug.WriteLine(
                     *          $"Read through the buffer: {Encoding.ASCII.GetString(recBuffer, 0, recCount)}");
                     *      recBuffer = new byte[2048];
                     *  }
                     *
                     * }*/
                    //socketClient.Shutdown(SocketShutdown.Send);
                    //socketClient.Shutdown(SocketShutdown.Both);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                //await Task.FromException(e);
            }
        }