1

Netduino Plus 2 を Web サービスに接続して、プロジェクトで使用したい値を検索します。私が Netduino でチェックした値の 1 つは、優先 IP アドレスです。Netduino の IP アドレスが優先とは異なる場合は、変更したいと思います。

私のプロジェクトには、文字列を取る BindIPAddress (以下) というメソッドがあります。

無効な引数のコード 10022 で SocketException を取得しています。これは、this.Socket.Bind を呼び出すと発生します。私のクラスには、Socket 値を保持するための Socket というプロパティがあります。私のソケットにはすでにエンドポイントがあるためですか? this.Socket = null を追加してから、 this.Socket = new (....... 操作するには新しいソケットが必要だと考えましたが、これは同じエラーを返しました。

IP アドレスをある静的 IP アドレスから別の静的 IP アドレスに変更する方法を教えてください。

 public void BindIPAddress(string strIPAddress)
    {
        try
        {

                Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].EnableStaticIP(strIPAddress, "255.255.240.0", "10.0.0.1");
            Microsoft.SPOT.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()[0].EnableStaticDns(new string[] { "10.0.0.2", "10.0.0.3" });
            IPEndPoint ep = new IPEndPoint(IPAddress.Parse(strIPAddress), 80);


            this.Socket.Bind(ep);
            this.IpAddress = strIPAddress;
        }
        catch(SocketException exc)
        {
            Debug.Print(exc.Message);
            Debug.Print(exc.ErrorCode.ToString());


        }
        catch(Exception ex)
        {
            Debug.Print(ex.Message);



        }
        //Debug.Print(ep.Address.ToString());
    }
4

1 に答える 1

2

この問題には 2 つの解決策が考えられます。1 つ目は、優先 IP アドレスをプログラムで設定する方法です。2 つ目は、 .NET Micro Framework SDK バンドルに付属するMFDeployツールを使用して、埋め込みを設定できるようにすることです。アプリケーションを実行する前に、デバイスのネットワーク構成を静的に変更します。

1)残りのコードを提供していないため、ソケットをにバインドするEndPoint適切な方法を次に示します(実際、ここに投稿した方法でそのクラスとバインディング関数を設計することはしませんが、欠落している部分に下線を引きたかっただけですあなたのコード):

    public void BindIPAddress(string strIPAddr)
    {
        Socket sock = null;
        IPEndPoint ipe = null;
        NetworkInterface[] ni = null;

        try
        {
            ipe = new IPEndPoint(IPAddress.Parse(strIPAddr), 80);
            sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);    // Assuming the WebService is connection oriented (TCP)
            // sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);  // if it broadcasts UDP packets, use this line (UDP)
            ni = NetworkInterface.GetAllNetworkInterfaces();

            if (ni != null && ni.Length > 0)
            {
                ni[0].EnableStaticIP(strIPAddr, "255.255.240.0", "10.0.0.1");
                ni[0].EnableStaticDns(new string[2] { "10.0.0.2", "10.0.0.3" });
                sock.Bind(ipe);
                this.Socket = sock;
                this.IpAddress = strIPAddr;
            }
            else
                throw new Exception("Network interface could not be retrieved successfully!");
        }
        catch(Exception ex)
        {
            Debug.Print(ex.Message);
        }
    }

2) または、プログラミングせずに、MFDeployツールを使用するだけで、組み込みデバイスを PC に接続し、以下のパスに従って優先 IP アドレスを設定できます。

MFDeploy > ターゲット > 構成 > ネットワーク

次に優先 IP アドレスを入力します。それだけです。

于 2015-04-22T09:33:27.633 に答える