package socket

import "github.com/Microsoft/go-winio/internal/socket"

Index

Variables

var (
	ErrBufferSize     = errors.New("buffer size")
	ErrAddrFamily     = errors.New("address family")
	ErrInvalidPointer = errors.New("invalid pointer")
	ErrSocketClosed   = fmt.Errorf("socket closed: %w", net.ErrClosed)
)
var (
	// todo: add `AcceptEx` and `GetAcceptExSockaddrs`
	WSAID_CONNECTEX = guid.GUID{
		Data1: 0x25a207b9,
		Data2: 0xddf3,
		Data3: 0x4660,
		Data4: [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},
	}
)

Functions

func Bind

func Bind(s windows.Handle, rsa RawSockaddr) (err error)

func ConnectEx

func ConnectEx(
	fd windows.Handle,
	rsa RawSockaddr,
	sendBuf *byte,
	sendDataLen uint32,
	bytesSent *uint32,
	overlapped *windows.Overlapped,
) error

func GetPeerName

func GetPeerName(s windows.Handle, rsa RawSockaddr) error

GetPeerName returns the remote address the socket is connected to.

See GetSockName for more information.

func GetSockName

func GetSockName(s windows.Handle, rsa RawSockaddr) error

GetSockName writes the local address of socket s to the RawSockaddr rsa. If rsa is not large enough, the windows.WSAEFAULT is returned.

Types

type RawSockaddr

type RawSockaddr interface {
	// Sockaddr returns a pointer to the RawSockaddr and its struct size, allowing
	// for the RawSockaddr's data to be overwritten by syscalls (if necessary).
	//
	// It is the callers responsibility to validate that the values are valid; invalid
	// pointers or size can cause a panic.
	Sockaddr() (unsafe.Pointer, int32, error)
}

RawSockaddr allows structs to be used with Bind and ConnectEx. The struct must meet the Win32 sockaddr requirements specified here: https://docs.microsoft.com/en-us/windows/win32/winsock/sockaddr-2

Specifically, the struct size must be least larger than an int16 (unsigned short) for the address family.

Source Files

rawaddr.go socket.go zsyscall_windows.go

Version
v0.6.2 (latest)
Published
Apr 9, 2024
Platform
windows/amd64
Imports
8 packages
Last checked
22 hours ago

Tools for package owners.