Vojenské zpravodajství (VZ) se v březnu zapojilo do mezinárodní operace proti aktivitám hackerské skupiny APT28, která je spojovaná s ruskou vojenskou zpravodajskou službou GRU a která přes slabě zabezpečené routery prováděla kybernetické útoky na státní a další organizace v ČR i zahraničí. Operaci vedl americký Federální úřad pro vyšetřování (FBI) a jejím cílem bylo odebrat útočníkům přístup k napadeným zařízením a ty následně … více »
Tvůrcem nejpopulárnější kryptoměny bitcoin, který se skrývá za pseudonymem Satoši Nakamoto (Satoshi Nakamoto), je britský kryptograf Adam Back. Na základě vlastní investigativní práce to tvrdí americký deník The New York Times (NYT). Několik indicií podle autorů jasně ukazuje na to, že Back a Nakamoto jsou stejný člověk. Jde mimo jiné o podobný odborný a osobnostní profil či totožné chyby a manýry v psaném projevu.
Google Chrome 147 byl prohlášen za stabilní. Nejnovější stabilní verze 147.0.7727.55 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře. Přehled novinek v Chrome DevTools 145 až 147 také na YouTube.
Vývojáři z Laboratoří CZ.NIC vydali nové verze aplikací Datovka (Datovka 4.29.0, Mobilní Datovka 2.6.2). V případě desktopové verze přibyly možnosti projít všechny uložené zprávy, zkontrolovat časy expirací časových razítek a přerazítkovat datové zprávy, které lze v ISDS přerazítkovat. Novinkou je také možnost vytahovat myší ze seznamu ZFO soubory datových zpráv, tento úkon jde udělat i pomocí tlačítek Ctrl+C. Nová verze Mobilní Datovky přináší jen drobné úpravy.
MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.28.0. Z novinek lze vypíchnout novou třídu machine.CAN.
Michael Meeks, CEO společnosti Collabora, na apríla oznámil, nebyl to ale apríl, že nadace The Document Foundation zastřešující vývoj kancelářského balíku LibreOffice vyloučila ze svých řad všechny zaměstnance a partnery společnosti Collabora, tj. více než třicet lidí, kteří po mnoho let přispívali do LibreOffice. Nadace The Document Foundation po několika dnech publikovala oficiální vyjádření. Přiznává pochybení při zakládání
… více »Protože je už po aprílu, můžou strahováci opět zveřejnit program další Virtuální Bastlírny, aniž by připravená témata působila dojmem, že jde o žert. Vězte tedy, že v úterý 14. dubna (změna!!!) od 20:00 proběhne VB, kde se setkají bastlíři, technici, učitelé i nadšenci do techniky a kde i vy se můžete zapojit do družného hovoru, jako by všichni seděli u pomyslného piva. Co mají bastlíři tento měsíc na srdci? Pravděpodobně by nás musel zasáhnout
… více »Byla vydána verze 26.1 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.
VOID (Video Object and Interaction Deletion) je nový open-source VLM model pro editaci videa, který dokáže z videí odstraňovat objekty včetně všech jejich fyzikálních interakcí v rámci scény (pády, kolize, stíny...) pomocí quadmaskingu (čtyřhodnotová maska, která člení pixely scény do čtyř kategorií: objekt určený k odstranění, překrývající se oblasti, objektem ovlivněné oblasti a pozadí scény) a dvoufázového inpaintingu. Za projektem stojí výzkumníci ze společnosti Netflix.
Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.
int main( int argn, char **arg )
{
int port = atoi( arg[ 1 ] );
int sock_listen = socket( AF_INET, SOCK_STREAM, 0 );
in_addr addr_any = { INADDR_ANY };
sockaddr_in srv_addr;
srv_addr.sin_family = AF_INET;
srv_addr.sin_port = htons( port );
srv_addr.sin_addr = addr_any;
// set socket options to reuse address and port again in short time
int opt = 1;
setsockopt( sock_listen, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof( opt ) );
// assign address and port to socket
bind( sock_listen, (const sockaddr * ) &srv_addr, sizeof( srv_addr ) );
listen( sock_listen, 1 );
int sock_client = 0;
// go!
while ( 1 )
{
char buf[ 100 ];
fd_set read_wait_set;
// set all bits to zero
FD_ZERO( &read_wait_set );
// wait for stdin
FD_SET( STDIN_FILENO, &read_wait_set );
// select listen or client socket
if ( sock_client )
FD_SET( sock_client, &read_wait_set );
else
FD_SET( sock_listen, &read_wait_set );
// wait for selected handles
if ( select( MAX( sock_client, sock_listen ) + 1,
&read_wait_set, 0, 0, 0 ) < 0 ) break;
// data on stdin?
if ( FD_ISSET( STDIN_FILENO, &read_wait_set ) )
{
// read data from stdin
int l = read( STDIN_FILENO, buf, sizeof( buf ) );
if ( l < 0 )
printf( "Unable to read data from stdin." );
else
printf( "Got %d bytes from stdin.", l );
// send data to client
l = write( sock_client, buf, l );
if ( l < 0 )
printf( "Unable send data to client." );
else
printf( "Sent %d bytes to client.", l );
}
// new connection form client?
else if ( FD_ISSET( sock_listen, &read_wait_set ) )
{
sockaddr_in rsa;
int rsa_size = sizeof( rsa );
// accept connection from client
sock_client = accept( sock_listen, ( sockaddr * ) &rsa, ( socklen_t * ) &rsa_size );
uint lsa = sizeof( srv_addr );
// get my identification
getsockname( sock_client, ( sockaddr * ) &srv_addr, &lsa );
// get client info
getpeername( sock_client, ( sockaddr * ) &srv_addr, &lsa );
printf( "Peer name: '%s' port: %d",
inet_ntoa( srv_addr.sin_addr ), ntohs( srv_addr.sin_port ) );
printf( "Enter 'quit' to quit server." );
}
// data from client?
else if ( FD_ISSET( sock_client, &read_wait_set ) )
{
// read data from socket
int l = read( sock_client, buf, sizeof( buf ) );
if ( !l )
{
printf( "Client close socket." );
close( sock_client );
sock_client = 0;
break;
}
else if ( l < 0 )
printf( "Unable to read data from socket." );
else
printf( "Read %d bytes from socket.", l );
// send all data to stdout
l = write( STDOUT_FILENO, buf, l );
// check, if client ask to close connection
if ( !strncasecmp( buf, "close", 5 ) )
{
printf( "Client sent 'close' request, connection closed." );
printf( "Now wait for new client." );
close( sock_client );
sock_client = 0;
}
}
// quit request from server or client
if ( !strncasecmp( buf, "quit", 4 ) )
{
close( sock_client );
printf( "Quit request entered... exiting now...\n" );
break;
}
}
close( sock_listen );
return 0;
}
Je to socket server. Prijima pripojeni od klientu a vypise do konzole zpravu, kterou klient napise. Ja bych prave potreboval aby server prijimal spojeni od nekolika klientu najednou a kdyz nejaky klient neco napise, server to vypise do konzole a kdyz neco napise server, vypisou to na svou konzoli vsichni klienti.
Zatim jsem jen prisel na to, ze musim vlozit radek "int pid = fork()" do kodu za funkci accept() a nechat otcovsky proces at vyrizuje pripojeni a nechat potomka at dela zbytek, ale stale se mi to nedari!
Mohli byste mi poradit? Byl bych vdecny za jakoukoliv pomoc.
Predem diky.
Tiskni
Sdílej: