Status - C++
Ano, je to tak, prázdniny začaly a já nemám co na práci
Doufám, že někdo poradí a neukamenujete mě za tu prasárnu co sem vložim
K dotazu: udělal jsem sice fuknkční, ovšem velmi pomalou kontrolu, zda je PC online. Když je ONLINE, jde to rychle, ale když je OFFLINE, je tam timeout asi 10s. Jde to udělat nějak jinak(rychleji)? Jak?
ifstream IPsoubor;
if (IPsoubor.fail())
{
cerr << "Error";
exit(1);
}
int a;
char IPadresy[15];
for(;; Sleep(1000), system("cls"))
{
IPsoubor.open("IP.txt");
while(!IPsoubor.eof())
{
a = 0;
IPsoubor >> IPadresy;
sConnect = socket(AF_INET, SOCK_STREAM, NULL);
addr.sin_addr.s_addr = inet_addr(IPadresy);
addr.sin_port = htons(1234);
addr.sin_family = AF_INET;
while(IPadresy[a] != NULL)
a++;
cout << IPadresy;
for(int b = 25; (b - a) > 0; b--)
cout << " ";
RetVal = connect(sConnect, (SOCKADDR*)&addr, sizeof(addr));
if(RetVal != 0)
cout << "OFFLINE";
else
cout << "ONLINE";
cout << endl;
}
IPsoubor.close();
}
Díky.
Co dělá funkce connect()?
Robí sa to tak, že dáš socket do neblokujúceho módu, zavoláš connect, vrátiš socket do pôvodného módu a funkciou select (ktorá má aj parameter pre timeout) zistíš, či sa podarilo pripojiť.
Viď napr.: How to set a socket connection timeout