Dziend dobry wszystkim mam maly problemik z ustaleniem w jkaim stanie znajduje sie aktualnie socket.
Mianowicie zalezy mi na sprawdzeniu (znajac numer socketu) jego aktualnego stanu czyli czy nasluchuje "listen" czy czeka na zamkniecie "time_wait" itp.
Probowalem wykorzystac funkcje getsockopt http://msdn2.microsoft.com/en-us/library/ms738544.aspx
ale bezsuktecznie zawsze wyrzuca mi blad WSANOTINITIALISED [???]
Macie moze jakies pomysly jak tego dokonac ?
W linku, który podałeś, jest napisane:
A successful WSAStartup call must occur before using this function.
Hmmm, może to Ci choć trochę pomoże.
Przykladowo probuje zablokowac mozliwsc odbioru i wysylania poprzez socket czegokolwiek funkcja shutdown
http://msdn2.microsoft.com/en-us/library/ms740481.aspx
niestety nadal nie dziala problem sie troszke zmianil po dodaniu WSAStartup teraz blad brzmi
WSAENOTSOCK czyli Socket operation on nonsocket a wiem za numer socketu jet na pewno poprawny :-/ [glowa]
procedure TForm1.Button1Click(Sender: TObject);
var
s : integer;
d :WSADATA;
begin
s := StrToInt(edit1.Text);
if (WSAStartup(2,d) = 0) then
memo1.Lines.Add('ok');
if (shutdown(s,SD_BOTH)= SOCKET_ERROR) then
Memo1.Lines.Add(IntToStr(WSAGetLastError))
else
memo1.Lines.Add('ok');
end;
Ok mniejwiecej doszedlem dlaczego funkcja shutdown czy closesocket nie dzialaja poniewaz sa to polaczenia UDP [!!!] I teraz mam problem poniewaz nie wiem jak badz jaka funkcja sprawdzic czy dany socket ktory ma polaczenie UDP jeszcze jest aktywny czy juz moze sie rozlaczyl :-(