Vývojáři postmarketOS vydali verzi 25.12 tohoto před osmi lety představeného operačního systému pro chytré telefony vycházejícího z optimalizovaného a nakonfigurovaného Alpine Linuxu s vlastními balíčky. Přehled novinek v příspěvku na blogu. Na výběr jsou 4 uživatelská rozhraní: GNOME Shell on Mobile, KDE Plasma Mobile, Phosh a Sxmo.
Byla vydána nová verze 0.41.0 multimediálního přehrávače mpv (Wikipedie) vycházejícího z přehrávačů MPlayer a mplayer2. Přehled novinek, změn a oprav na GitHubu. Požadován je FFmpeg 6.1 nebo novější a také libplacebo 6.338.2 nebo novější.
Byla vydána nová verze 5.5 (novinky) skriptovacího jazyka Lua (Wikipedie). Po pěti a půl letech od vydání verze 5.4.
Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.
V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od
… více »Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.
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: