C# winsock gethostname 文字化け
- 題名: C# winsock gethostname 文字化け
- 著者: み
- 日時: 2009/06/24 16:50:01
- ID: 24816
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: C# winsock gethostname 文字化け
- 著者: Hongliang
- 日時: 2009/06/24 17:17:34
- ID: 24818
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: C# winsock gethostname 文字化け
- 著者: み
- 日時: 2009/06/25 12:43:41
- ID: 24822
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: C# winsock gethostname 文字化け
- 著者: み
- 日時: 2009/06/25 16:03:10
- ID: 24824
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
お世話になります。
またすいません ご教授をお願いします。
ホスト名の取得で化けてしまいます。
C言語バージョンでは「EPSON・・・」と表示されます。
[DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern Int32 WSAStartup(Int16 wVersionRequested, ref WSAData wsaData);
[DllImport("Ws2_32.DLL", CharSet = CharSet.Auto,SetLastError = true)]
private extern static Int32 WSACleanup();
[DllImport("Ws2_32.DLL", CharSet = CharSet.Auto, SetLastError = true)]
private extern static Int32 gethostname(StringBuilder name, int length);
[DllImport("Ws2_32.DLL", CharSet = CharSet.Auto, SetLastError = true)]
private extern static Int32 gethostbyname( StringBuilder szHost);
public const int SUCCESS = 0;
public const int HIGH_VERSION = 2;
public const int LOW_VERSION = 2;
public const Int16 WORD_VERSION = 0x202;
public const int MAX_WSA_DESCRIPTION = 256;
public const int MAX_WSA_SYS_STATUS = 128;
//Winsock構造体
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi, Pack=4)]
public struct WSAData
{
public Int16 wVersion;
public Int16 wHighVersion;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_WSA_DESCRIPTION + 1)]
public String szDescription;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_WSA_SYS_STATUS + 1)]
public String szSystemStatus;
public UInt16 iMaxSockets;
public UInt16 iMaxUdpDg;
public IntPtr lpVendorInfo;
}
private void button1_Click(object sender, EventArgs e)
{
WSAData data = new WSAData();
int result = 0;
//winsockへバージョンを指定
data.wHighVersion = HIGH_VERSION;
data.wVersion = LOW_VERSION;
//winsockの初期化
result = WSAStartup(0x202, ref data);
if (result == SUCCESS)
{
//ホスト名の取得
StringBuilder hostname = new StringBuilder();
hostname.Length = 0;
if (gethostname(hostname, 0x100) != 0)
{
Console.WriteLine("** error ** gethostname");
WSACleanup();
return;
}
Console.WriteLine("ホスト名:" + hostname);
WSACleanup();
}
}