socketプログラム silverlight for windows phoneへの移植のポイント

17
Socketプログラム Siverlight for Windows Phoneへの 移植のポイント Silverlight を囲む会in#19 伊勢 シン (Microsoft MVP for Windows Phone)

Upload: shin-ise

Post on 05-Dec-2014

2.537 views

Category:

Technology


8 download

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 )