Windows phone 8 Netframework v4 socket中的BeginRead方法等效于什么

Windows phone 8 Netframework v4 socket中的BeginRead方法等效于什么,windows-phone-8,Windows Phone 8,在netframework v2中,套接字使用Invoke(beginhead)方法调用方法(示例ReceiveMsg),如下所示: client=新的TcpClient() client.Connect(SERVERIP,端口号) 数据=新字节[client.ReceiveBufferSize] SendMessage(“hello\n”) client.GetStream().BeginRead(数据,0,System.Convert.ToInt32(client.ReceiveBuffer

在netframework v2中,套接字使用Invoke(beginhead)方法调用方法(示例ReceiveMsg),如下所示:

client=新的TcpClient()
client.Connect(SERVERIP,端口号)
数据=新字节[client.ReceiveBufferSize]
SendMessage(“hello\n”)

client.GetStream().BeginRead(数据,0,System.Convert.ToInt32(client.ReceiveBufferSize),ReceiveMsg,null)

  • 此方法是否始终在“自动模式”下接收socket的ReceiveMsg,以便待机接收SocketServer广播的消息

  • 或者它正在使用System.Threading.Thread.Sleep()使ReceiveMsg方法始终处于活动状态,以便在SocketServer广播消息时处于就绪模式以响应

  • 不再需要在Netframework v4或4.5 socket中将此ReceiveMsg方法作为BeginRead()执行此操作

  • 谢谢

    下面是NetFrameworkV4中套接字的代码:(用于WP mango/Wp8)

    Client.Connect(); Client.Send(); Client.Receive()

    公共字符串接收() { //--从服务器接收回复 string response=“接收操作超时”; //我们正在通过已建立的套接字连接接收数据 if(_socket!=null) { //创建SocketAsyncEventArgs上下文对象 SocketAsyncEventArgs socketEventArg=新的SocketAsyncEventArgs(); SocketEventTarget.RemoteEndPoint=\u socket.RemoteEndPoint; //设置缓冲区以接收数据 SocketEventTarget.SetBuffer(新字节[最大缓冲区大小],0,最大缓冲区大小); //已完成事件的内联事件处理程序。 //注意:这个偶数处理程序是内联实现的,目的是使这个方法自包含。 SocketEventTarget.Completed+=新事件处理程序(委托(对象s,SocketAsyncEventArgs e) { 如果(e.SocketError==SocketError.Success) { //从缓冲区中检索数据 response=Encoding.UTF8.GetString(e.Buffer,e.Offset,e.bytesttransfered); response=response.Trim('\0'); } 其他的 { 响应=e.SocketError.ToString(); } _clientDone.Set(); }); //将事件的状态设置为未签名,从而导致线程阻塞 _clientDone.Reset(); //通过套接字发出异步接收请求 _socket.ReceiveAsync(socketEventArg); //阻止UI线程的最大超时时间为毫秒或秒。 //如果在此时间内没有回复,则继续 _clientDone.WaitOne(超时\u毫秒); } 其他的 { response=“套接字未初始化”; } 返回响应; }
    为什么你需要这个(尤其是当你似乎不明白你在试图做什么的时候)?您已经从MSDN获得了.NET4的工作示例…@Paul Annetts:谢谢。根据链接,我遵循了.Net4示例。我似乎无法像.NETV2那样,按照我想要的GetStream方法,以连续循环的方式获取接收消息。非常感谢你在这件事上的帮助。 public string Receive() { //-- receive the reply from server string response = "Receiving Operation Timeout"; // We are receiving over an established socket connection if (_socket != null) { // Create SocketAsyncEventArgs context object SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs(); socketEventArg.RemoteEndPoint = _socket.RemoteEndPoint; // Setup the buffer to receive the data socketEventArg.SetBuffer(new Byte[MAX_BUFFER_SIZE], 0, MAX_BUFFER_SIZE); // Inline event handler for the Completed event. // Note: This even handler was implemented inline in order to make this method self-contained. socketEventArg.Completed += new EventHandler(delegate(object s, SocketAsyncEventArgs e) { if (e.SocketError == SocketError.Success) { // Retrieve the data from the buffer response = Encoding.UTF8.GetString(e.Buffer, e.Offset, e.BytesTransferred); response = response.Trim('\0'); } else { response = e.SocketError.ToString(); } _clientDone.Set(); }); // Sets the state of the event to nonsignaled, causing threads to block _clientDone.Reset(); // Make an asynchronous Receive request over the socket _socket.ReceiveAsync(socketEventArg); // Block the UI thread for a maximum of TIMEOUT_MILLISECONDS seconds. // If no response comes back within this time then proceed _clientDone.WaitOne(TIMEOUT_MILLISECONDS); } else { response = "Socket is not initialized"; } return response; }