【问题标题】:Windows Phone 8: Send data to a remoteserverWindows Phone 8:将数据发送到远程服务器
【发布时间】:2013-10-15 06:30:18
【问题描述】:

我正在尝试为 WP8 实施 gps 跟踪。但我不知道哪个代码可以让我访问套接字以将数据发送到服务器。

我已经在网络表单中尝试过这个

udpClient.Connect(IP, Port)

' Sends a message to the host to which you have connected. 
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(message)
udpClient.Send(sendBytes, sendBytes.Length)
udpClient.Close()

但对于 Windows 手机。有点复杂。

请给我一个解决方案

【问题讨论】:

标签: c# windows vb.net windows-phone-8


【解决方案1】:

我给你一个小例子,你如何通过套接字连接发送数据: 但我建议你去看看完整的微软官方文档。

使用 TCP - 套接字

How to create and use a TCP socket client app for Windows Phone

使用 UDP - 套接字

How to create and use a UDP socket client app for Windows Phone

易于在您的代码中实现

    // Cached Socket object that will be used by each call for the lifetime of this class
    Socket _socket = null;
    // Signaling object used to notify when an asynchronous operation is completed
    static ManualResetEvent _clientDone = new ManualResetEvent(false);
    // Define a timeout in milliseconds for each asynchronous call. If a response is not received within this
    // timeout period, the call is aborted.
    const int TIMEOUT_MILLISECONDS = 5000;
    // The maximum size of the data buffer to use with the asynchronous socket methods
    const int MAX_BUFFER_SIZE = 2048;

    /// <summary>
    /// SocketClient Constructor
    /// </summary>
    public SocketClient()
    {
        // The following creates a socket with the following properties:
        // AddressFamily.InterNetwork - the socket will use the IP version 4 addressing scheme to resolve an address
        // SocketType.Dgram - a socket that supports datagram (message) packets
        // PrototcolType.Udp - the User Datagram Protocol (UDP)
        _socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    }


    /// <summary>
    /// Send the given data to the server using the established connection
    /// </summary>
    /// <param name="serverName">The name of the server</param>
    /// <param name="portNumber">The number of the port over which to send the data</param>
    /// <param name="data">The data to send to the server</param>
    /// <returns>The result of the Send request</returns>
    public string Send(string serverName, int portNumber, string data)
    {
        string response = "Operation Timeout";
        // We are re-using the _socket object that was initialized in the Connect method
        if (_socket != null)
        {
            // Create SocketAsyncEventArgs context object
            SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
            // Set properties on context object
            socketEventArg.RemoteEndPoint = new DnsEndPoint(serverName, portNumber);
            // Inline event handler for the Completed event.
            // Note: This event handler was implemented inline in order to make this method self-contained.
            socketEventArg.Completed += new EventHandler<SocketAsyncEventArgs>(delegate(object s, SocketAsyncEventArgs e)
            {
                response = e.SocketError.ToString();
                // Unblock the UI thread
                _clientDone.Set();
            });
            // Add the data to be sent into the buffer
            byte[] payload = Encoding.UTF8.GetBytes(data);
            socketEventArg.SetBuffer(payload, 0, payload.Length);
            // Sets the state of the event to nonsignaled, causing threads to block
            _clientDone.Reset();
            // Make an asynchronous Send request over the socket
            _socket.SendToAsync(socketEventArg);
            // Block the UI thread for a maximum of TIMEOUT_MILLISECONDS milliseconds.
            // If no response comes back within this time then proceed
            _clientDone.WaitOne(TIMEOUT_MILLISECONDS);
        }
        else
        {
            response = "Socket is not initialized";
        }
        return response;
    }

【讨论】:

  • 我有一个小问题:这个socket没有在模拟器上初始化吗?
  • 我不确定我是否理解您的问题。套接字可以完全从模拟器初始化。我在描述中添加了缺少的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
相关资源
最近更新 更多