ホーム › Networking.WinSock › IPX_SPXCONNSTATUS_DATA
IPX_SPXCONNSTATUS_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ConnectionState | BYTE | 1 | +0 | +0 | 接続の状態を指定します。 |
| WatchDogActive | BYTE | 1 | +1 | +1 | ウォッチドッグ機能が有効かどうかを指定します。 |
| LocalConnectionId | WORD | 2 | +2 | +2 | ローカルの接続 ID を指定します。 |
| RemoteConnectionId | WORD | 2 | +4 | +4 | リモートの接続 ID を指定します。 |
| LocalSequenceNumber | WORD | 2 | +6 | +6 | ローカルのシーケンス番号を指定します。 |
| LocalAckNumber | WORD | 2 | +8 | +8 | ローカルの確認応答 (ACK) 番号を指定します。 |
| LocalAllocNumber | WORD | 2 | +10 | +10 | ローカルの割り当て番号を指定します。 |
| RemoteAckNumber | WORD | 2 | +12 | +12 | リモートの確認応答 (ACK) 番号を指定します。 |
| RemoteAllocNumber | WORD | 2 | +14 | +14 | リモートの割り当て番号を指定します。 |
| LocalSocket | WORD | 2 | +16 | +16 | ローカルのソケットを指定します。 |
| ImmediateAddress | BYTE | 6 | +18 | +18 | ローカルコンピューターが接続している IPX アドレスを指定します。 |
| RemoteNetwork | BYTE | 4 | +24 | +24 | リモートホストが接続しているネットワークを指定します。 |
| RemoteNode | BYTE | 6 | +28 | +28 | リモートのノードを指定します。 |
| RemoteSocket | WORD | 2 | +34 | +34 | リモートのソケットを指定します。 |
| RetransmissionCount | WORD | 2 | +36 | +36 | 再送信の回数を指定します。 |
| EstimatedRoundTripDelay | WORD | 2 | +38 | +38 | 指定したパケットの推定ラウンドトリップ遅延時間をミリ秒単位で指定します。 |
| RetransmittedPackets | WORD | 2 | +40 | +40 | ソケット上で再送信されたパケットの数を指定します。 |
| SuppressedPacket | WORD | 2 | +42 | +42 | ソケット上で抑制されたパケットの数を指定します。 |
公式ドキュメント
IPX_SPXCONNSTATUS_DATA 構造体は、接続済みの SPX ソケットに関する情報を提供します。optname パラメーターに IPX_SPXGETCONNECTIONSTATUS を指定した getsockopt 関数の呼び出しと組み合わせて使用します。 IPX_SPXCONNSTATUS_DATA 内のすべての数値は Novell 形式 (上位バイトから下位バイトの順) です。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// IPX_SPXCONNSTATUS_DATA (x64 44 / x86 44 バイト)
typedef struct IPX_SPXCONNSTATUS_DATA {
BYTE ConnectionState;
BYTE WatchDogActive;
WORD LocalConnectionId;
WORD RemoteConnectionId;
WORD LocalSequenceNumber;
WORD LocalAckNumber;
WORD LocalAllocNumber;
WORD RemoteAckNumber;
WORD RemoteAllocNumber;
WORD LocalSocket;
BYTE ImmediateAddress[6];
BYTE RemoteNetwork[4];
BYTE RemoteNode[6];
WORD RemoteSocket;
WORD RetransmissionCount;
WORD EstimatedRoundTripDelay;
WORD RetransmittedPackets;
WORD SuppressedPacket;
} IPX_SPXCONNSTATUS_DATA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IPX_SPXCONNSTATUS_DATA
{
public byte ConnectionState;
public byte WatchDogActive;
public ushort LocalConnectionId;
public ushort RemoteConnectionId;
public ushort LocalSequenceNumber;
public ushort LocalAckNumber;
public ushort LocalAllocNumber;
public ushort RemoteAckNumber;
public ushort RemoteAllocNumber;
public ushort LocalSocket;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] ImmediateAddress;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public byte[] RemoteNetwork;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] RemoteNode;
public ushort RemoteSocket;
public ushort RetransmissionCount;
public ushort EstimatedRoundTripDelay;
public ushort RetransmittedPackets;
public ushort SuppressedPacket;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IPX_SPXCONNSTATUS_DATA
Public ConnectionState As Byte
Public WatchDogActive As Byte
Public LocalConnectionId As UShort
Public RemoteConnectionId As UShort
Public LocalSequenceNumber As UShort
Public LocalAckNumber As UShort
Public LocalAllocNumber As UShort
Public RemoteAckNumber As UShort
Public RemoteAllocNumber As UShort
Public LocalSocket As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public ImmediateAddress() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public RemoteNetwork() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public RemoteNode() As Byte
Public RemoteSocket As UShort
Public RetransmissionCount As UShort
Public EstimatedRoundTripDelay As UShort
Public RetransmittedPackets As UShort
Public SuppressedPacket As UShort
End Structureimport ctypes
from ctypes import wintypes
class IPX_SPXCONNSTATUS_DATA(ctypes.Structure):
_fields_ = [
("ConnectionState", ctypes.c_ubyte),
("WatchDogActive", ctypes.c_ubyte),
("LocalConnectionId", ctypes.c_ushort),
("RemoteConnectionId", ctypes.c_ushort),
("LocalSequenceNumber", ctypes.c_ushort),
("LocalAckNumber", ctypes.c_ushort),
("LocalAllocNumber", ctypes.c_ushort),
("RemoteAckNumber", ctypes.c_ushort),
("RemoteAllocNumber", ctypes.c_ushort),
("LocalSocket", ctypes.c_ushort),
("ImmediateAddress", ctypes.c_ubyte * 6),
("RemoteNetwork", ctypes.c_ubyte * 4),
("RemoteNode", ctypes.c_ubyte * 6),
("RemoteSocket", ctypes.c_ushort),
("RetransmissionCount", ctypes.c_ushort),
("EstimatedRoundTripDelay", ctypes.c_ushort),
("RetransmittedPackets", ctypes.c_ushort),
("SuppressedPacket", ctypes.c_ushort),
]#[repr(C)]
pub struct IPX_SPXCONNSTATUS_DATA {
pub ConnectionState: u8,
pub WatchDogActive: u8,
pub LocalConnectionId: u16,
pub RemoteConnectionId: u16,
pub LocalSequenceNumber: u16,
pub LocalAckNumber: u16,
pub LocalAllocNumber: u16,
pub RemoteAckNumber: u16,
pub RemoteAllocNumber: u16,
pub LocalSocket: u16,
pub ImmediateAddress: [u8; 6],
pub RemoteNetwork: [u8; 4],
pub RemoteNode: [u8; 6],
pub RemoteSocket: u16,
pub RetransmissionCount: u16,
pub EstimatedRoundTripDelay: u16,
pub RetransmittedPackets: u16,
pub SuppressedPacket: u16,
}import "golang.org/x/sys/windows"
type IPX_SPXCONNSTATUS_DATA struct {
ConnectionState byte
WatchDogActive byte
LocalConnectionId uint16
RemoteConnectionId uint16
LocalSequenceNumber uint16
LocalAckNumber uint16
LocalAllocNumber uint16
RemoteAckNumber uint16
RemoteAllocNumber uint16
LocalSocket uint16
ImmediateAddress [6]byte
RemoteNetwork [4]byte
RemoteNode [6]byte
RemoteSocket uint16
RetransmissionCount uint16
EstimatedRoundTripDelay uint16
RetransmittedPackets uint16
SuppressedPacket uint16
}type
IPX_SPXCONNSTATUS_DATA = record
ConnectionState: Byte;
WatchDogActive: Byte;
LocalConnectionId: Word;
RemoteConnectionId: Word;
LocalSequenceNumber: Word;
LocalAckNumber: Word;
LocalAllocNumber: Word;
RemoteAckNumber: Word;
RemoteAllocNumber: Word;
LocalSocket: Word;
ImmediateAddress: array[0..5] of Byte;
RemoteNetwork: array[0..3] of Byte;
RemoteNode: array[0..5] of Byte;
RemoteSocket: Word;
RetransmissionCount: Word;
EstimatedRoundTripDelay: Word;
RetransmittedPackets: Word;
SuppressedPacket: Word;
end;const IPX_SPXCONNSTATUS_DATA = extern struct {
ConnectionState: u8,
WatchDogActive: u8,
LocalConnectionId: u16,
RemoteConnectionId: u16,
LocalSequenceNumber: u16,
LocalAckNumber: u16,
LocalAllocNumber: u16,
RemoteAckNumber: u16,
RemoteAllocNumber: u16,
LocalSocket: u16,
ImmediateAddress: [6]u8,
RemoteNetwork: [4]u8,
RemoteNode: [6]u8,
RemoteSocket: u16,
RetransmissionCount: u16,
EstimatedRoundTripDelay: u16,
RetransmittedPackets: u16,
SuppressedPacket: u16,
};type
IPX_SPXCONNSTATUS_DATA {.bycopy.} = object
ConnectionState: uint8
WatchDogActive: uint8
LocalConnectionId: uint16
RemoteConnectionId: uint16
LocalSequenceNumber: uint16
LocalAckNumber: uint16
LocalAllocNumber: uint16
RemoteAckNumber: uint16
RemoteAllocNumber: uint16
LocalSocket: uint16
ImmediateAddress: array[6, uint8]
RemoteNetwork: array[4, uint8]
RemoteNode: array[6, uint8]
RemoteSocket: uint16
RetransmissionCount: uint16
EstimatedRoundTripDelay: uint16
RetransmittedPackets: uint16
SuppressedPacket: uint16struct IPX_SPXCONNSTATUS_DATA
{
ubyte ConnectionState;
ubyte WatchDogActive;
ushort LocalConnectionId;
ushort RemoteConnectionId;
ushort LocalSequenceNumber;
ushort LocalAckNumber;
ushort LocalAllocNumber;
ushort RemoteAckNumber;
ushort RemoteAllocNumber;
ushort LocalSocket;
ubyte[6] ImmediateAddress;
ubyte[4] RemoteNetwork;
ubyte[6] RemoteNode;
ushort RemoteSocket;
ushort RetransmissionCount;
ushort EstimatedRoundTripDelay;
ushort RetransmittedPackets;
ushort SuppressedPacket;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IPX_SPXCONNSTATUS_DATA サイズ: 44 バイト(x64)
dim st, 11 ; 4byte整数×11(構造体サイズ 44 / 4 切り上げ)
; ConnectionState : BYTE (+0, 1byte) poke st,0,値 / 値 = peek(st,0)
; WatchDogActive : BYTE (+1, 1byte) poke st,1,値 / 値 = peek(st,1)
; LocalConnectionId : WORD (+2, 2byte) wpoke st,2,値 / 値 = wpeek(st,2)
; RemoteConnectionId : WORD (+4, 2byte) wpoke st,4,値 / 値 = wpeek(st,4)
; LocalSequenceNumber : WORD (+6, 2byte) wpoke st,6,値 / 値 = wpeek(st,6)
; LocalAckNumber : WORD (+8, 2byte) wpoke st,8,値 / 値 = wpeek(st,8)
; LocalAllocNumber : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; RemoteAckNumber : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; RemoteAllocNumber : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; LocalSocket : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; ImmediateAddress : BYTE (+18, 6byte) varptr(st)+18 を基点に操作(6byte:入れ子/配列)
; RemoteNetwork : BYTE (+24, 4byte) varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; RemoteNode : BYTE (+28, 6byte) varptr(st)+28 を基点に操作(6byte:入れ子/配列)
; RemoteSocket : WORD (+34, 2byte) wpoke st,34,値 / 値 = wpeek(st,34)
; RetransmissionCount : WORD (+36, 2byte) wpoke st,36,値 / 値 = wpeek(st,36)
; EstimatedRoundTripDelay : WORD (+38, 2byte) wpoke st,38,値 / 値 = wpeek(st,38)
; RetransmittedPackets : WORD (+40, 2byte) wpoke st,40,値 / 値 = wpeek(st,40)
; SuppressedPacket : WORD (+42, 2byte) wpoke st,42,値 / 値 = wpeek(st,42)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IPX_SPXCONNSTATUS_DATA
#field byte ConnectionState
#field byte WatchDogActive
#field short LocalConnectionId
#field short RemoteConnectionId
#field short LocalSequenceNumber
#field short LocalAckNumber
#field short LocalAllocNumber
#field short RemoteAckNumber
#field short RemoteAllocNumber
#field short LocalSocket
#field byte ImmediateAddress 6
#field byte RemoteNetwork 4
#field byte RemoteNode 6
#field short RemoteSocket
#field short RetransmissionCount
#field short EstimatedRoundTripDelay
#field short RetransmittedPackets
#field short SuppressedPacket
#endstruct
stdim st, IPX_SPXCONNSTATUS_DATA ; NSTRUCT 変数を確保
st->ConnectionState = 100
mes "ConnectionState=" + st->ConnectionState