Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for(int ix = 0; ix < 20; ix++)
- {
- var socket = new Socket(AddressFamily.InterNetwork,
- SocketType.Dgram, ProtocolType.Udp);
- socket.Bind(new IPEndPoint(IPAddress.Any, ix+6000));
- var e = new SocketAsyncEventArgs();
- e.Completed+=OnReceive;
- e.SetBuffer(buffer, ix*1024*1024, 1024*1024);
- socket.ReceiveFromAsync(e);
- _sockets.Add(socket);
- }
- static void OnReceive(object sender, SocketAsyncEventArgs e)
- {
- Console.WriteLine("Received {0} bytes", e.BytesTransfered);
- if(!((Socket)sender).ReceiveFromAsync(e))
- e_Completed(sender, e);
- }
- private static BlockingCollection<byte[]> _received = new ...
- static void OnReceive(object sender, SocketAsyncEventArgs e) {
- byte[] data = new byte[e.BytesTransfered];
- Array.Copy(e.buffer, e.Offset, data, 0, e.BytesTransfered);
- _received.Add(data)
- ...
- }
- var parallelOptions = new ParalellOptions { MaxDegreeOfParallelism = 3 };
- Parallel.ForEach(_received.GetConsumingPartitioner(),
- parallelOptions,
- data => {
- // do processing
- ...
- });
Add Comment
Please, Sign In to add comment