socketプログラム silverlight for windows phoneへの移植のポイント
DESCRIPTION
TRANSCRIPT
- 1. SocketSiverlight for Windows Phone Silverlight in #19 (Microsoft MVP for Windows Phone)
- 2. iPhone / Android Windows Phone EbIRC (WM5/6) ZEROProxy (WM5/6) Giraffe (WM5/6) SongTweeter (WP7)
- 3.
- 4. Windows Phone Mango Socket Windows Mobile 6.x .NET Compact Framework Socket
- 5. .NET Fx Silverlight Socket
- 6. .NET Fx Silverlight Socket .NET Fx Silverlight for Windows Phone System.Net.Socket Silverlight Socket NetworkStream StreamReader SslStream SSL ( )
- 7. .NET Framework Socketpublic IAsyncResult BeginReceive(byte[ ] buffer, int offset, int size, SocketFlagssocketFlags, out SocketError errorCode, AsyncCallback callback, object state) Begin- / End- IAsyncResult
- 8. Silverlight for WP Socket public bool ReceiveAsync(SocketAsyncEventArgs e) ( ) 2 EventArgs true
- 9. Socket .NET Framework
- 10. .NET Frameworkm_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);m_connectAsync = m_socket.BeginConnect(remoteEndPoint, new AsyncCallback(OnConnected), m_socket);protected void OnConnected(IAsyncResult ar){ try { // // ( EndConnect SocketException ) Socket socket = (Socket)ar.AsyncState; socket.EndConnect(ar); IAsyncResult
- 11. Silverlight for Windows PhoneSocketAsyncEventArgs eargs = new SocketAsyncEventArgs();eargs.RemoteEndPoint = remoteEndPoint;eargs.Completed += new EventHandler(ConnectCompleted);m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); EventArgsif (!m_socket.ConnectAsync(eargs)){ // ConnectCompleted(m_socket, eargs);}
- 12. .NET Frameworkm_stream = new NetworkStream(socket);m_reader = new StreamReader(m_stream, this.Encoding);while (true){ string line =m_reader.ReadLine(); -- --} NetworkStream StreamReader 1
- 13. Silverlight for Windows Phone m_receiveBuffer = new byte[2048]; SocketAsyncEventArgs e = new SocketAsyncEventArgs();e.SetBuffer(m_receiveBuffer, 0, m_receiveBuffer.Length);e.Completed += new EventHandler(ReceiveCompleted); m_socket.ReceiveAsync(e);
- 14. Silverlight for Windows Phonevoid ReceiveCompleted(object sender, SocketAsyncEventArgs e){ if (e.SocketError == SocketError.Success) { if (e.BytesTransferred > 0) { // snip } if (!m_sendLoopStop) Receive(); BeginReceive } else { ProcessSocketError(e.SocketError); }}
- 15. .NET Compact Framework DnsEndPoint (Control.Invoke/ Dispatcher.Invoke)
- 16. Demo
- 17. Socket Background Agent Socket IRC IRC IRC Toast iOS4 Long-time Task UX (pirc )