#define WIN32_LEAN_AND_MEAN #include #include #include #include #include #include #define WIN32_LEAN_AND_MEAN int __cdecl main(int argc, char *argv[]) { WSADATA wsadata; struct sockaddr_un addr; socklen_t len; int z = AF_UNIX; SOCKET s, s0; if (WSAStartup(MAKEWORD(2,2), &wsadata) != 0) { printf("STartup failed\n"); return 0; } s0 = socket(AF_UNIX, SOCK_STREAM, 0); memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; //strcpy(addr.sun_path, argv[1]); strcpy(addr.sun_path, "foo.sock"); z = bind(s0, (const struct sockaddr *) &addr, strlen(addr.sun_path) + sizeof (addr.sun_family)); if (z != 0) { printf("bind failed %ld\n", WSAGetLastError()); } len = sizeof(addr); z = getsockname(s0, (struct sockaddr *)&addr, &len); if (z != 0) { printf("getsockname failed %ld\n", WSAGetLastError()); } else { printf("getsockname works\n"); printf("fam = %d, len = %d\n", addr.sun_family, len); int clen = len - offsetof(struct sockaddr_un, sun_path); printf("offsetof clen = %d\n", clen); printf("strlen = %zd\n", strlen(addr.sun_path)); printf("name = %s\n", addr.sun_path); } }