Has probado a usar addr en vez de offset?
exactamente cuando haces referencia al puntero de una struct tienes que usar la directiva addr, ya que offset no "funciona" en esos casos, te pego una parte del code, almenos el cliente.
.data?
S1 SOCKET ?
S2 SOCKET ?
Sin1 sockaddr_in <>
Sin2 sockaddr_in <>
WSAData WSADATA <>
Temp DD ?
.code
start:
invoke WSAStartup, 0101h, ADDR WSAData
invoke socket, PF_INET, SOCK_STREAM, IPPROTO_TCP
mov S1, eax
mov ax, AF_INET
mov Sin1.sin_family, ax
xor eax, eax
mov Sin1.sin_addr, eax
invoke inet_addr, addr ServerIPAddress
mov Sin1.sin_addr, eax
invoke htons, ListeningPort ; listen to a specified port
mov Sin1.sin_port, ax
;invoke bind, S1, ADDR Sin1, SIZEOF sockaddr_in
;invoke closesocket, S2
;mov eax, SIZEOF sockaddr_in
;mov Temp, eax
;invoke accept, S1, ADDR Sin2, ADDR Temp
;mov S2,eax
invoke connect, S1, addr Sin1, SIZEOF Sin1
mov TempVar, SIZEOF SendBuff
invoke send, S1, addr SendBuff, TempVar, 0
creo que te daría la idea ._.
Nox.