static void Main(string[] args) { IPEndPoint p = new IPEndPoint(IPAddress.Parse("192.168.0.107"), 11000 Socket sok = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sok.Connect(p); NetworkStream s= new NetworkStream(sok); var f = Observable.FromAsyncPattern(s.BeginRead, s.EndRead); byte[] b = new byte[60]; var obs2 = Observable.While(() => s.DataAvailable, Observable.Defer(() => f(b, 0, 60))); Thread.Sleep(5000); obs2.Subscribe(x => { Thread.Sleep(1000); char[] cs = Encoding.UTF7.GetChars(b, 0, x); Console.WriteLine("out" + new string(cs)); }); Console.ReadLine(); } Note that FromAsyncPattern is marked obsolete. Socket Server stream out data: static void Main(string[] args) { byte[] bytes = new Byte[1024]; IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName()); IPAddress ipAddress = ipHostInfo.AddressList[0]; IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000); // Create a TCP/IP socket. Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { listener.Bind(localEndPoint); listener.Listen(10); // Start listening for connections. Console.WriteLine("Waiting for a connection..."); Socket handler = listener.Accept(); while (true) { Thread.Sleep(1000); string s = "Data @ " + DateTime.Now.ToString(); Console.WriteLine("sending..." +s); byte[] msg = Encoding.ASCII.GetBytes(s); handler.Send(msg); } handler.Shutdown(SocketShutdown.Both); handler.Close(); Console.ReadLine(); } catch (Exception e) { Console.WriteLine(e.ToString()); } Console.WriteLine("\nPress ENTER to continue..."); Console.Read(); } }
Blog Archive
Saturday, September 7, 2013
Converting stream to Observable through Async Pattern
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment