Ja sam ovako odradio:
sockaddr_in myAddr;
WORD wVersionRequested;
WSADATA wsaData;
int err, listenSocket;
wVersionRequested = MAKEWORD( 2, 2 );
///WSAStartup
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
AddString(hwnd,"Error: Could not find usable WinSock DLL !");
return;
}
if (LOBYTE(wsaData.wVersion ) != 2 || HIBYTE(wsaData.wVersion ) != 2 )
{
AddString(hwnd,"Error: Could not find usable WinSock DLL !");
WSACleanup();
return;
}
if(listenSocket = socket(AF_INET,SOCK_STREAM,0) == INVALID_SOCKET)
{
// obrada greske...
}
char yes = '1';
myAddr.sin_family = AF_INET;
myAddr.sin_port = htons(PORT); // short, network byte order
myAddr.sin_addr.s_addr = INADDR_ANY; // choose this computer IP address
memset(&(myAddr.sin_zero), '\0', 8); // rest of structure fill with zeroes
if (setsockopt(listenSocket,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == SOCKET_ERROR)
{
// obrada greske
}
if(bind(listenSocket, (struct sockaddr *)&myAddr, sizeof(struct sockaddr)) == SOCKET_ERROR)
{
// obrada greske
}
E ovako, prvo sam probao bez ovo "setsockopt" i uvek mi je prijavljivalo gresku, ja sam greske obradio (samo ih ovde nisam napisao radi preglednosti) sa GetLastError() ali je kod greske 0 pa ne znam sta se desava, zatim sam sve to isto probao sa tim "setsockopt" misleci da je mozda adresa u upotrebi.
Kad sam stavio setsockopt on mi izbacuje gresku u setsockopt, ja sam i te greske takodje obredio sa GetLastError() ali i tu greska ima kod 0 pa ne znam sta se desava....
Da li neko mozda zna zasto socket ne moze da uspostavi bind?