Všem čtenářkám a čtenářům AbcLinuxu krásné Vánoce.
Byla vydána nová verze 7.0 linuxové distribuce Parrot OS (Wikipedie). S kódovým názvem Echo. Jedná se o linuxovou distribuci založenou na Debianu a zaměřenou na penetrační testování, digitální forenzní analýzu, reverzní inženýrství, hacking, anonymitu nebo kryptografii. Přehled novinek v příspěvku na blogu.
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í.
Zdravím.
mám třídu (Odesilatel), která má simulovat přístroj - posílá data po UDP na danou ip po daném portu - konkrétním na 127.0.0.1:2023
Druhá (Prijemce) třída přijímá data po UDP na danym portu (odkukoliv), zpracuje je (udělá z nich floaty) a uloží do bufferu.
Pokud je simulátor puštěnej z jinýho programu než příjemce, vše funguje. Pokud jsou puštěny z jednoho, tak se přijme jen 92 packetů, pak jich to 260 přeskočí (+- 20, tehnle počet se mění, ale 92 jich to přijme vždy a 93 už je posunutej) a pak to zase přijímá normálně - další stovky packetů (nebo to občas začne zase přeskakovat).
Odesilatel a příjemce jsou ve vlastních threadech. Wireshark říká, že odesilatel odešle data správně, při krokování je vidět, že příjemce je už v int size = read(socketDesc, data, 65535); dostane přeskonečené. Trápim se s tim celý den a nemam ponětí, co dělám špatně.
Pokud nepošlu 981bytů, ale míň, tak to funguje normálně (asi by to začlo přeskakovat někde dál), takže předpokldám, že se něco někam nevejde, ale nemůžu přijít na to co/kam. Vidíte v tom někdo nějakou botu?
Projemce p;
Odesilatel o;
o.start();
p.startReadData();
while(1){
if(m.dataLength() > 0){
Data<float> d = p.getData();
for(int y = 0;y<d.length();y++)
fprintf(outF,"%f;%f\n",...);//vypis dat do souboru
}
}
Prijemce:
Prijemce::Prijemce(){
socketDesc = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
sockaddr_in serverSock;
serverSock.sin_family = AF_INET;
serverSock.sin_addr.s_addr = htonl(INADDR_ANY);
serverSock.sin_port = htons(2023);
bind( socketDesc, (const sockaddr*) &serverSock, sizeof(serverSock) );
}
void Prijemce::startReadData(){
th = new std::thread(&MeterUDP::readPackets,this);
}
Data<float> Prijemce:getData(){
mutex.lock();
Data<float> ret = dataBuffer;
dataBuffer.clear();
mutex.unlock();
return ret;
}
void Prijemce::readPackets(){
ByteArray *bA;
while(1){
fd_set fds;
timeval tv;
FD_ZERO(&fds);
FD_SET(socketDesc, &fds);
tv.tv_sec = 1;
tv.tv_usec = 0;
u8 data[65535];
int test = 0;
int ret = select(socketDesc+1, &fds, NULL, NULL, &tv);
if(ret == 1){
int size = read(socketDesc, data, 65535);
Bytes b;
b.insert(b.end(),data,data+size);
bA = new ByteArray(b);
}
}
Data<float> dataBuffer = kouzla(bA);//konertuje ByteArray do pouzitelnyho formatu
}
Odesilatel:
Odesilatel::Odesilatel(){
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(2023);
net_aton("127.0.0.1", &serv_addr.sin_addr)
}
void Odesilatel::start(){
th = new std::thread(&Odesilatel::sendData,this);
}
void Odesilatel::sendData(){
while(1){
u8 packet[981];
for(int i = 0;i<981;i++)
packet[i] = data;//tady naplnim data (ze souboru, ale to neni podstatny)
sendto(sockfd, packet, 981, 0, (struct sockaddr*)&serv_addr, slen);
}
}
Řešení dotazu:
Tiskni
Sdílej: