C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■93020 / )  Re[6]: C#でC++DLLコマンドを実行
□投稿者/ サラリーマンZ (7回)-(2019/11/14(Thu) 23:36:23)
Hongliangさん、ご丁寧に回答頂き誠に有難う御座います。
C++ DLL作成者に問い合わせたところ、コマンド実行のために my / dst の指定は必要とのことで、
Hongliangさんご察しの通りでした。

struct sockaddr_inの定義コード有難うございます。
参考にさせていただきます。 ↓下記のようなコードでとりあえず試してみます。

        //ConnectParameterの定義
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
        public struct ConnectParameter
        {
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string Addr1;
            public int Port1;
            [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
            public string Addr2;
            public int Port2;
        }

        //sockaddr_inの定義
        struct sockaddr_in
        {
            public ushort sin_family, sin_port;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
            public byte[] sin_addr;
            [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
            public byte[] sin_zero;
        }

    //コマンド実行
        private void button1_Click(object sender, EventArgs e)
        {
                CP.Addr1 = "192.168.1.2";
                CP.Port1 = 9999;
                CP.Addr2 = "192.168.1.1";
                CP.Port2 = 9999;

                my.sin_addr = IPAddress.Parse(CP.Addr1).GetAddressBytes();
                dst.sin_addr = IPAddress.Parse(CP.Addr2).GetAddressBytes();

                Connect(CP);
        }

struct sockaddr_in の中身としてsin_family / sin_port / sin_addr / sin_zero とありますが、
sin_addr だけでなく、sin_family や sin_port も指定してあげないと
うまく動作しない感じでしょうか。。。

>>Connect(struct ConnectParameter CP);
> 結局
>>C++ のところ、*が付いていました。
> は勘違いということで良いんですかね?

Connect(struct ConnectParameter CP)に関しては、*付いていませんでした。
勘違いでした。。。 混乱させて申し訳ありません。

返信 編集キー/


管理者用

- Child Tree -