Microsoft oznámil, že WSL kontejnery (WSLC) aneb linuxové kontejnery ve Windows Subsystem for Linux (WSL) jsou již obecně dostupné. Současně popsal jejich architekturu.
openSUSE Leap 16.1 vstoupil do RC fáze. Nově lze instalovat jako standardní systém (Standard) nebo jako neměnný systém s atomickými aktualizacemi (Immutable). Samostatná neměnná distribuce openSUSE Leap Micro končí.
Byl vydán Mozilla Firefox 157.0. S nejvýraznější vizuální proměnou za poslední roky. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 157 bude brzy k dispozici také na Flathubu a Snapcraftu.
Rodina produktů Raspberry Pi se rozšířila o Raspberry Pi Smart Display Module. Deska pro Raspberry Pi Compute Module 5 se zasouvá přímo do displejů dle specifikace Intel SDM. Cena desky je 30 dolarů.
Byla vydána nová verze 2.56.0 distribuovaného systému správy verzí Git. Přispělo 104 vývojářů, z toho 39 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
Hackerská skupina ShinyHunters oznámila průnik do informačních systémů FBI, prostřednictvím zero-day zranitelnosti v platformě Oracle PeopleSoft, kterou úřad využívá mimo jiné pro náborový portál FBIJobs.gov. Útočníci tvrdí, že získali až 3 TB dat o současných i bývalých zaměstnancích a uchazečích o práci. Jako důkaz zveřejnili vzorek přibližně 5 000 záznamů obsahující jména, adresy, telefonní čísla, data narození, čísla
… více »Doba kompilace linuxového jádra se díky rychlejšímu hardwaru a optimalizacím kbuildu snižuje k deseti sekundám. Nejnovější patche Lorenza Stoakse (vznikají i s pomocí SI) zkrátily na testovacím stroji dobu sestavení z dlouhých 22 vteřin na pouhých 15, a to bez použití RAMdisku. Testovací systém tvořily dva procesory AMD EPYC 9575F (oba dohromady poskytují celkem 128 jader a 256 vláken), čtyřiadvacet 64GB DDR5-6400 paměťových modulů a
… více »Před rokem a půl vývojáři postmarketOS informovali, že pro projekt hledají nové jméno. Včera bylo oznámeno: postmarketOS se nově jmenuje Nura.
Hra Factorio dorazila na Printables. Hned teď si můžete stáhnout 65 různých modelů a nechat celou mimozemskou planetu oživnout na svém stole.
GNU Project Debugger aneb GDB byl vydán ve verzi 18.1. Podrobný přehled novinek v souboru NEWS.
pokud neupresnite zadani dotazu (dalsi podrobnosti, zverejneni kodu...), do te doby se neda rozumne odpovedet
predpokladam, ze kod prilis dlouhy nebude - kdyz jsem sveho casu delal neco podobneho (jak klient, tak server) tak jsem se vesel radove do 8kB se serverem a asi 3kB klient (jen uloz stranku na disk)
jinak mne napada... zkousel jste komunikaci i s necim jinym? (jiny web server+Vas klient a vas server+jiny klient)? a podivat se primo na tu komunikaci... treba tcpdumpem
int main(){
int server_sock, client_sock;
int server_len, client_len;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char request[]="HTTP/1.0 200 OK\n\n"
"[html]
"[head]"
"[title]Download[/title]"
"[/head]"
"[body]"
"[table border=\"1\" cellpadding=\"6\" cellspacing=\"0\"]"
"[tr height=\"210\"]"
"[td width=\"210\" rowspan=\"2\"][img src=\"/home/honza/download/pinguin.png\" width=\"210\" height=\"210\" border=\"0\" name=\"Pinguin\"][/td]"
"[td width=\"500\"]"
"[p]zde stahujte..[a href=\"/home/honza/download/obrazek.png\" name=\"Pinguin\"]Pinguin[/a][/p]"
"[/td]"
"[/tr]"
"[/table]"
"[/body]"
"[/html]";
char answer[2000];
int received, sent;
int i=0,c;
FILE *input;
if((server_sock=socket(AF_INET, SOCK_STREAM, 0))==-1)
err_mess("Server soket nebyl spravne vytvoren!");
server_addr.sin_family=AF_INET;
server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
server_addr.sin_port=htons(80); // 80 - http server => nutna prava roota!!!
server_len=sizeof(server_addr);
if((bind(server_sock, (struct sockaddr*) &server_addr, server_len))==-1)
err_mess("Adress not given (bind)");
if((listen(server_sock, 5))==-1) // 5 - delka fronty pozadavku na spojeni
err_mess("(listen)");
while(1){
printf("server waiting..\n");
client_len=sizeof(client_addr);
if((client_sock=accept(server_sock, (struct sockaddr*) &client_addr, &client_len))==-1)
err_mess("Connection not accepted!");
if((received=recv(client_sock, answer, sizeof(answer), 0))==-1)
err_mess("Cannot receive data!");
if((sent=send(client_sock, request, sizeof(request), 0))==-1)
err_mess("Data not sent!");
close(client_sock);
}
close(server_sock);
return (0);
}
posilate VZDY jen Vasi predpripravenou odpoved, bez ohledu na to, co po Vasem serveru chce klient
_uplne minimalni_ reseni je nacist a rozparsovat aspon prvni radek hlavicky (ve tvaru GET /dir1/dir2/soubor.xyz HTTP/1.0)
tim aspon zjistite, CO VLASTNE klient chce (nacist data, ulozit data..; a pak nazev souboru); a odpovedet podle toho. (aspon podporuju/nepodporuju metodu, nenalezl soubor, nalezl soubor, je tahle velky a posilam ho...) - sice to neodpovida RFC, ale jen pro pokusne odeslani souboru to staci.
jako odpoved jsem pro (podle mne platny) pozadavek posilal aspon:
HTTP/1.1 200 OK Server: (nejaky string) Accept-Ranges: bytes Content-Length: (delkasouboru) Connection: close Content-Type: (mime_typ) (a obsah vlastniho souboru)
ikdyz uznavam, sam jsem si take napsal svoji implementaci. a nakonec pouzivam jako server apache a na stahovani wget a curl
Accept-Ranges: bytesTo bych neposílal, tahle implementace nevypadá, že by uměla posílat na vyžádání části souborů
Podle me je to spatna logika. Html server je udelanej tak, ze posila klientovi soubory s tim, ze pres http protokol indikuje jaky. V praxi se to pouziva tak, ze kdyz zadas nejakou stranku, tak prohlizec ji stahne (tj posle serveru prikaz neco jako GET sss.com/stranka.html a ten posle zpatky odpoved Content type: html + nejake dalsi udaje + samotny textovy soubor se strankou) a analyzuje, v pripade ze na te strance nejsou odkazy tak neudela nic dalsiho, pokud tam najde odkazy (a,img,...) tak je postupne stahuje tim, stejnym zpusobem (posle serveru GET sss.com/obr.png a ten posle zpatky Content type: data (?) + delku atd + samotny obrazek) a az to klient obdrzi, tak ten obrazek zobrazi.
HTTP Made Really Easy
Tiskni
Sdílej: