I am writing shellcode on BackTrack 5 R2 x86 running in Virtualbox and the registers prior to the int 0x80 syscall look like this:

eax 0x66
ecx 0x8e60558
edx 0x0
ebx 0x3

which is set up for the connect() syscall. The value in the ecx register is an argument array that contains:

0x8e60558: 0x00000009 0x8e60583 0x00000010

where 0x00000009 is the file descriptor, 0x8e60583 is the server struct pointer that points to:

0x8e60583: 0x00000002 0x0000115c 0x0100007f

which is:

[address]: [AF_INET=2] [PORT=4444] [IP=127.0.0.1]

I know that the file descriptor is correct and all of the constant values set up in the registers like storing 0x66 in eax (socketcall is syscall #102) are correct to the best of my knowledge yet when I run the code, which should return the connected socket FD in the eax register, it returns:

eax: 0xffffff9b

which is the error code for "network unreachable". What I have I done incorrectly? Would it have to anything to do with the network settings of Virtualbox?

EDIT: This doesn't have anything to do with the endianess as I have tried both network byte order and little endian.