Witam. Napisałem aplikację. Jest to serwer. Korzystam z Winsock. Wszystko pozamykałem w funkcjach żeby móc z tego potem z łatwością korzystać. Program kompiluje się bez błędów. Kiedy go uruchamiam to wygląda tak jakby szło wszystko dobrze dopóki nie dojdzie do bindowania. Wtedy pokazuje że nie może bindować i program już nic więcej nie zrobi. Ktoś ma pomysł co jest nie tak? Oto kod aplikacji:
HWND hwnd;
SOCKET klient=INVALID_SOCKET,connected = INVALID_SOCKET;
WSADATA wsaData;
WORD version = MAKEWORD( 2, 0);
struct sockaddr_in sin;
void WSA_init(WORD version, WSADATA wsaData);
void WSA_init(WORD version, WSADATA wsaData)
{
if (WSAStartup(version,&wsaData) != 0)
{
MessageBox(hwnd,"Nastąpił błąd inicjalizacji WSA.", "Error",MB_OK);
WSACleanup(); }
else
{
MessageBox(hwnd,"Inicjalizacja WSA przebiegła pomyślnie.", "Info",MB_OK);
}
}
void set_addr(sockaddr_in sin);
void set_addr(sockaddr_in sin)
{
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(2050);
}
void create_listen(SOCKET klient);
void create_listen(SOCKET klient)
{
klient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if (klient == INVALID_SOCKET)
{
MessageBox(hwnd,"Socket nie powstał.","Error",MB_OK);
WSACleanup();
}
}
void bind_klient(SOCKET *klient, sockaddr_in *sin);
void bind_klient(SOCKET *klient, sockaddr_in *sin)
{
if (bind(*klient,(struct sockaddr*)sin, sizeof(*sin)) == SOCKET_ERROR)
{
MessageBox(hwnd,"Bind - błąd.","Error",MB_OK);
closesocket(*klient);
WSACleanup();
}
}
void listening(SOCKET klient);
void listening(SOCKET klient)
{
if(listen(klient,SOMAXCONN) == SOCKET_ERROR)
{
MessageBox(hwnd,"Błąd nastąpił przy bindowaniu","Error",MB_OK);
closesocket(klient);
WSACleanup();
}
}
void accept_client(SOCKET connected);
void accept_client(SOCKET connected)
{
if (connected == INVALID_SOCKET)
{
MessageBox(hwnd,"Nie zaakceptowano połączenia.","Error",MB_OK);
closesocket(klient);
WSACleanup();
}
}