Sziasztok!
A kérdés adott, mint feljebb olvasható.
Már nagyon sok helyen keresgéltem, de nem találtam megoldást.
A probléma az lenne, hogy a suliban (BMF) lenne egy féléves programozási feladatunk. A haverommal azt találtuk ki, hogy egy game szerver vezérlőt csinálunk. A game egy screen-en belül fut, így könnyen le lehet lőni, meg el lehet indítani, hogy a háttérben fusson. Viszont azt is bevállaltuk, hogy parancsokat lehessen küldeni a szervernek. S én anno olyat olvastam, hogy anélkül is lehet a screen-en belűli proginak parancsot küldeni, hogy reattacholni keljen... viszont most ezt sehol sem találom... Tudok ebben segíteni?
Üdv Dani
- 2038 megtekintés
Hozzászólások
Miért nem hallgat a program vmi magas porton? Akkor tudnál neki pl. netcat-el parancsokat küldeni...
- A hozzászóláshoz be kell jelentkezni
Ezt kifejtenéd bővebben is? Mert tetszik az 5let.
Mindenre nyitott vagyok ami megoldást jelenthet.
Üdv Dani
- A hozzászóláshoz be kell jelentkezni
Hallgatozol valami >1024 porton, ha jön valami, kiértékeled, és kész. Konkrétat esetleg programnyelv megjelölése után...
- A hozzászóláshoz be kell jelentkezni
konkrétum:
Tudom most érünk a megkövezés részhez :D
ASP.NET kell megírni és webszolgáltatásnak van álcázva.
A könnyebség kedvéért csak shell scripteket rántunk be, azzal indjuk, leállítjuk, és konfig fájlt írjuk és olvassuk.
Plussz ugye arra gondoltunk, hogy egy screen-el vezérelve parancsot is tudunk küldeni.
pl.: map dm/mohdm2 (mohaa esetén)
most, hogy VPC-re felraktam egy Debian Echt-et, a screen-be az -X kapcsolóval tudtam egy exec parancsot küldeni, de az mint egy shell parancs akart lefutni, s nem a játék szerver konzoljára ír be...
(remélem érthető voltam)
A netcat érdekelne, mert az nc -vvnu xxx.xxx.xxx.xxx port -al tudtam kapcsolódni a mohaa szerverhez UDP-vel, de ha beírok bármit nem történik semmi, annyit viszont látok, hogy hány packet lett kiküldve.
Üdv Dani
- A hozzászóláshoz be kell jelentkezni
Na várj, a szerver most standalone program, vagy asp.net webservice, mert a kettő nem egy és ugyanaz. Kissé zavaros vagy...
A screen-be küldött dolgok általában shell scriptként akarnak lefutni, tehát vagy megoldod a stateless vezérlést, vagy elfelejted az egészet.
.NET-ben meg lehet azt csinálni, hogy kreálsz egy ServerSocket-et, arra listenelsz, accept(), ha az visszatér, nyitsz egy szálat, majd megin kapcsolatra vársz. Az új szálban lekéred a ClientSocket-től (vagy csak simán Socket, ezt így most nem tudom) a StreamReader-t (akármi is a .NET-beli neve), abból kiolvasod a kliens által küldött parancsot, és nagyjából ennyi is a vezérlés.
Ehhez a serverhez vagy netcat vagy telnet segítségével tudsz kapcsolódni, de asszem telnet is yó, mert a .NET automatice keepalive socketet csinál.
Bővebben msdn.microsoft.com és msdn2.microsoft.com
- A hozzászóláshoz be kell jelentkezni
Ha .NET webszolgáltatást írsz (nem csak álcázod), akkor valószínüleg erre az egész hóbelevancra semmi szükséged. Mondjuk .NET-ben még nem írtam ilyet, de a J2EE tudja amiket leírsz mindenféle szkiptelés meg screen nélkül.
- A hozzászóláshoz be kell jelentkezni
Szerintem a "-X" parancssori kapcsolora emlekszel:
" -X Send the specified command to a running screen session. "
(lsd. meg: "man screen")
- A hozzászóláshoz be kell jelentkezni
Na igen, azt már próbáltam, de nincs hatása...
nem küld vissza hibát, de semmi sem történik, még logba sem kerül bele.
szerk:
illetve most vettem észre valamit:
ha megpróbálom a screent reattacolni ez a hibát kapom:
Cannot open your terminal '/dev/pts/9' - please check.
Üdv Dani
- A hozzászóláshoz be kell jelentkezni
google-vel ilyet talaltam:
screen -S screenneve -X eval 'stuff ls\015'
ls helyere megy a parancs amit vegre akarsz hajtani
\015 az szerintem az enter lesz.
Tyrael
- A hozzászóláshoz be kell jelentkezni
subscribe
- A hozzászóláshoz be kell jelentkezni