Fråga : Rpg-hålighetprogramet som hänger på, förbinder ()

Först I-förmiddag som är ny till att programmera för hålighet. I grundar ett stort tutorial on-line, och att återanvända för förmiddag kodifierar från den. Förmiddag I using ett hålighetprogram som överför hexen, befaller till ett produktionfunktionskort. Hexen befaller ökar/förminskar kontrar, etc. på board.
In mitt hålighetprogram, mig överför det binärt/hexen befaller till olika 8 matar in portar för att stiga ombord ska bearbeta. I detta exempel I-förmiddagen using programvara som överför det binärt, befaller för att simulera matar in 1 (den sammanlagda räkningen). Ska returen för hålighetprogram den på måfå ett fel som det inte kunde förbinda till host.
Ex:

I kan köra mitt program 70x inom ett minimalt, eller så och den ökar slutsumman kontrar 70x. Allt är boten. Därefter ut ur ingenstans, när du kallas, programförsöken att göra en anslutning på port 4001 och det hängningar. Det går därefter ett fel som tillbaka påstår det, kunde inte göra en anslutning till vara värd inom frånslagningstiden period.

As för arbetet/inte arbetet, det verkar fullständigt slumpmässigt. Jag kan skapa håligheten, överför, och slutet håligheten alla flera tider och är boten. Jag kan väntan 3 noterar och överför därefter, och programhängningarna på förbinda fungerar. Några idéer?

thanks i förskott - Adam
> för
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
" codeBody " socka = hålighet för class= för eval " (AF_INET: SOCK_STREAM: IPPROTO_IP) om förbind (sockan: p_connto: addrlen) < 0 eval fela = errnoen nära callp (sockan) callpmatris ('förbind (): '+%str (strerroren (fela),)) gå tillbaka endif eval rc = överför (sockan: %addr (activeCmd): 4: 0) om rc < 4 eval fela = errnoen nära callp (sockan) callpmatris (%str (strerror (fela),)) gå tillbaka endif eval rc = Recv (socka: %addr (activeCmd): 4: 0) e något, om inga byte gick tillbaka om rc < 1 nära callp (sockan) callpmatris (%str (strerror (fela),)) gå tillbaka endif
" klar "

Svar : Rpg-hålighetprogramet som hänger på, förbinder ()

Så långt som gruppera NEP, som vidarebefordrar, jag gillar egentligen det solitt av det, men vet inte vad det är.

Ledset…, NEP -- Evigt program.

I stort det är ett program som du sänder till inkört några grupperar undersystem, och som förväntas för att kretsa för evigt. (Väl, tills någon sort av befaller eller signalerar, berättar den att avsluta.), Du styrkan sänder den till jobbet köar QSYSNOMAX för att köra lika olika serverprogram.

Ditt program skulle start, genom att öppna hålighetanslutningen. Därefter det skulle sitter stunder som väntar ett tillträde för att ankomma på data, köar. När som helst ett tillträde visades, det skulle överför det över håligheten och går tillbaka att se, om ett annat tillträde var på datan köar.

Det styrkan spenderar 99.999% av dess tid som väntar precis. Några numrerar av program från andra jobb kunde överföra befaller till singeldatan köar.

Om nödvändigt, datan köar kunde stämmas, så att varje befalla hade ett unikt filnamn, kanske att härledas från GENUUIDEN API. När en befalla dras från köa och överförde ut håligheten, den unika LEGITIMATIONEN är van vid överför en bekräftelsebaksida till och med datan köar. Endast det skulle överförande jobbet vet vilket nyckel- var bekräftelsen för den. Datan köar skulle ger tvåvägskommunikation mellan dina jobb och din ”hålighetserver”.

Om volymen var så mycket som din server inte kunde uppehället upp, du skulle enkelt start en understödja en.

”Den skulle hålighetserveren” har allt som behövs för att göra ditt hålighetarbete. Den skulle för att inte ha några komplikationer från att behöva att förstå befaller från datan köar -- den överför precis, allt vad visar upp. Uppehälle som logiken fokuserade i nicely avskild proc, enheter och program -- proper uppdelning av arbetet.

Dina ”beställareprogram” ska är också enkla. Allt som de gör, är handtaget anslå befaller stränger och överför dem till datan köar. (Valfritt, det är tvåvägsdata köar; men den styrka är en mer sistnämnd förbättring. Gör det arbete, då gör det förbättrar.),

Om du inte har använt, data köar, dig bör finna dem som mycket är lättare än håligheter.

Tom
Andra lösningar  
 
programming4us programming4us