и якій операційна система не чекає, коли нитка сама захоче звільнити процесор, а примусово знімає її з виконання - після того, як та витратила відведене їй час (квант) або якщо в черги готових з'явилася нитка з більш високим пріоритетом. При такій організації поділу процесора жодна нитка не займе процесор на дуже довгий час.
Операційна система Windows 2000
Windows 2000, є нащадком NT, володіє всіма її достоїнствами, а багато хто з її обмежень при цьому знімає. Windows 2000 - один з найбільших програмних продуктів, його код містить близько 30 млн. Рядків. У Windows 2000 з'явилася підтримка шини USB, РС-карт, шини AGP і DVD-пристроїв, а також технології Plug and Play lt; # justify gt; 2. ПРАКТИЧНА ЧАСТИНА
У ході виконання курсової роботи було розроблено та запрограмовано в середовищі програмування Borland Builder C ++ клієнт серверний додаток з використанням сокетів.
Серверне застосування виконує створення сервера і підключення клієнтів до нього і обміну з ним повідомленнями.
Малюнок 1.Созданіе сервера
Малюнок 2.Подключеніе Клієнта
Малюнок 3.Обмен повідомлення з клієнтом
Лістинг програми сервера
//---------------------------------------------------------------------------
# include lt; vcl.h gt;
# pragma hdrstop
# include lt; winsock.h gt;
# include lt; iostream gt;
# include lt; list gt;
# include lt; fstream.h gt;
# include lt; conio.h gt;
//---------------------------------------------------------------------------
# pragma argsusednamespace std; wsadata; server_socket; buff [тисяча двадцять чотири]; :: list lt; SOCKET gt; clients; WINAPI ClientPool (LPVOID param)
{SOCKET client_socket=(SOCKET) param; (true)
{bytes=recv (client_socket, amp; buff [0], sizeof (buff), 0); ( client:% s n raquo ;, buff);
} return 0;/* bytes_recv; client_socket; _socket=(SOCKET) param; ((bytes_recv=recv (client_socket, amp; buff [0], sizeof (buff), 0)) amp; amp; bytes_recv!=SOCKET_ERROR)
{printf ( client:% s n raquo ;, buff); :: list lt; SOCKET gt; :: iterator it; (it=clients.begin (); it!=clients.end (); ++ it) ((* it), buff, bytes_recv, 0);} */( disconnect n ); (client_socket); 0;} main ()
{WSAStartup (MAKEWORD (2,2), amp; wsadata); _ socket=socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); _ IN server_addr; _addr.sin_family=AF_INET; _addr.sin_port=htons (6666 ); _ addr.sin_addr.s_addr=INADDR_ANY; (server_socket, (SOCKADDR *) amp; server_addr, sizeof (server_addr)); (server_socket, 10); ( Server start n ); (true)
{_ IN client_addr; len_client_addr=sizeof (client_addr); client=accept (server_socket, (struct sockaddr *) amp; client_addr, amp; len_client_addr); ( New connection n ) ;. push_back (client); ThreadID; hThread=CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) ClientPool,
(void *) client, 0, amp; ThreadID); (1)
{( amp; buff [0], sizeof (buff), stdin); (client, buff, strlen (buff) - 1,0);
}
} 0;
}
//---------------------------------------------------------------------------
Клієнтський додаток виконує підключення до сервера і обмін з ним повідомленнями.
Малюнок 4.Подключеніе до сервера
Малюнок 5.Обмен повідомленнями з клієнтом
Лістинг програми Клієнт
//---------------------------------------------------------------------------
# include lt; vcl.h gt;
# pragma hdrstop
# include lt; winsock.h gt;
# include lt; iostream gt;
# include lt; list gt;
# include lt; stdlib.h gt;
# include lt; stdio.h gt;
# include lt; fstream.h gt;
# include lt; conio.h gt;
//---------------------------------------------------------------------------
# pragma argsusedwsadata; client_socket; buff [1 024]; WINAPI ServerPool (LPVOID param)
{server_socket=(SOCKET) param; (true)
{bytes=recv (server_socket, amp; buff [0], ...