- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- hcl: Kelj fel komám, ne aludjál
- bambano: Bambanő háza tája
- Gurulunk, WAZE?!
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
Új hozzászólás Aktív témák
-
kovisoft
őstag
válasz
McSzaby #2098 üzenetére
Az nem jó, hogy valószínűségi alapon számolod ki, hogy csináljon-e valamit vagy sem? Pl. ha az esetek 70%-ában kell, akkor csak akkor csináljon valamit, ha egy 0-1 közötti random szám kisebb, mint 0.7.
Ha ez nem elég pontos, akkor azt is nyilván kellene tartani, hogy hányszor futott, ebből hányszor csinált valamit, és a randomban vizsgált százalékot módosítani ezzel az aránnyal (pl. ha 70%-ban kellene valamit csináljon, és eddig 50-ből 35 helyett csak 30-szor csinálta, akkor növelni a százalékot).
-
McSzaby
őstag
Sziasztok,
a következő a feladat:
Fut egy script, amely futtat egy functiont percenként. Az elvárás az lenne, hogy a functionon belül, egy bizonyos rész/command/hívás csak a teljes futási szám X%-ban fusson le.Tehát, ha 70% a megadott ráta, akkor 10 futásból csak 7x fusson le random alkalmakkor. A probléma az, hogy teljes futási szám teljesen változó, nem tudom leszámolni 1 napra, vagy 1 órára.
Mielőtt még szétfikáznánk az ötletet, - amit én is csak kaptam - higgyétek el kérlek nekem, hogy lenne értelme a mi esetünkben.
-
axioma
veterán
[kieg: ajanlom Competitive Programming 3 (by Steven Halim) konyvet neked, neten megtalalhato elektronikusan, en csinaltattam belole konyvet de nem az a minoseg, nem erte meg... viszont tartalmilag erdekes, ilyenekkel is foglalkozik, ahol meg nagyon versenyspecifikus, azt at kell ugrani]
-
axioma
veterán
No problem, a te idodet akartam megsporolni. Es nyugodtan kerdezz, hackerrank / hackerearth / codechef usereim nekem is vannak, bar cikkeket ritkan olvasok, inkabb a versenyek miatt. A legutobbi felvetelim resze is hackerrank teszt volt, amit a site stilusanak es mukodesenek ismereteben toredek ido alatt teljesitettem... szoval megeri.
-
Lacc
aktív tag
Elnézést
. Igazából élveztem utána olvasni a témának még jobban, mert pont a napokban kezdtem el ráugrani a hackerrank-es probléma megoldásokra, és akár hiszed akár nem elsősorban önmagam fejlesztése céljából tettem. Köszi a mini bemutatkozást, legalább már tudom, hogy kihez fordulhatok még, ha szeretném a fent ecsetelt témakört majd jobban elmélyíteni.
-
Janos46
tag
Köszönet mindenkinek a javaslatért és a megoldásért.
-
kovisoft
őstag
válasz
Janos46 #2080 üzenetére
Az zavarhatott meg, hogy a print-nek lehet adni több paramétert, ezeket mind ki fogja írni egymástól elválasztva. A write-nak viszont ennél kötöttebb a formátuma, csak egy stringet tud kiírni, tehát amit a print-nél vesszőkkel elválasztva írattál ki, azokból (ahogy a többiek előttem már javasolták) össze kell állítani egy db stringet, és azt átadni a write-nak.
-
KEAN
tag
válasz
Janos46 #2080 üzenetére
Hi, hát mondjuk úgy, hogy eléggé összevissza paraméterezed azt a write függvényt.
https://docs.python.org/3.7/library/turtle.html#turtle.writej.write("Ez egy " + str(q) + " szám", align="center", font=("Arial", 20, "normal")) # Harmadik
-
Janos46
tag
Sziasztok!
Elakdtam, tudnátokl segíteni?
Szeretnék egy szerkesztett ablakba kiíratni két szöveg közé egy számot. Lásd alant a példát. Egy egyszerű printnél működik, de ha már az ablakba kellene írnia, akkor nem megy. A harmadik write sor lenne a lényeg, az első kettő csak próbálkozás. Mi az amit nem tudok?Valaki el tudná küldeni a megoldást?
Köszi. Jánosfrom turtle import *
import turtle
ablak=turtle.Screen()
ablak.bgcolor("lightgreen"),setup(width=400, height=400, startx=0, starty=0)
j=turtle.Turtle()
q=20
print ("Ez egy", q," szám")
j.write("Ez egy huszas szám", q, align="center", font=("Arial", 20, "normal")) # Első
j.write(q, "Ez egy huszas szám", align="center", font=("Arial", 20, "normal")) # Második
j.write("Ez egy", q, "szám", align="center", font=("Arial", 20, "normal")) # Harmadik -
kovisoft
őstag
Igen, tökéletesen igazad van, lehet számlálni is, de nem egyetlen számlálót kell akkor sem nyilvántartani, hanem típusonként egyet, mivel az eredeti feladat szerint azt akarta tudni, hogy van-e adott típusú elem a dict-ben (a tuple csak egy példa volt). Tehát a módszereddel kell egy dict a típusokra, és abban nyilvántartani minden típusra az elemek számát. Amúgy Én is EQMontoya elegáns megoldását választanám, hacsak nem kell mindenáron ügyelni a performanciára.
-
axioma
veterán
válasz
kovisoft #2076 üzenetére
Persze, nem is arra reagaltam, hanem a dict-ben kereses O(1) vs. linearis-ra. Igazad van, rosszul linkeltem hogy mirol jutott eszembe (EQMontoya-ra kellett volna eggyel elotted), nem a te megoldasodrol. Btw arra azt irtam hogy az akkor is O(1) ha minden hozzaadas es kivetel eseten egy szamlalot update-elsz, nem kell kulon map-be is rakni. A vizsgalatok szama (marmint hogy az elem tuple-e) ugyanannyi.
-
axioma
veterán
Nem tudhattad, de matkus, progmat diplomaval es 20ev fejlesztoi multtal a hatam mogott, benne ne'mi versenyprogramozas es annak szakirodalmaval, en ertem az ordo-t (kicsit, nagyot, matematikailag is nem csak szemlelteteskent). Meg a cimzest is nyilvan - azert amikor en vegeztem sokkal inkabb az alapmukodes reszleteit tanultuk.
Az nem volt vilagos, hogy milyen alapon jelent meg hogy dict-ben keresni O(1). Ha mar ott lett volna hogy majdnem, vagy adott meretben, meg se szolalok. Mar elozo valaszokban is volt ne'mi tulmagyarazas szamomra, de gondoltam nem szolok, ugyis lezarva, masnak meg igy is hasznos. De most szolok hogy feleslegesen - legalabbis nekem segiteskent - ne aldozz idot a tovabbi reszletezesre. -
Lacc
aktív tag
Röviden O(1) az csak egy kategóra, amely azt jelöli, hogy nem függ a bemeneti elemek számától, n-től.
Megegyezés, hogy O(C) ---> O(1) kategóriának felel meg, ahol C egy konstans, ami > 0. (O(9) --> O(1) lesz)
Másképp, O(bármely konstans) kifejezést az O(1)-nek feleltetnek meg.Röviden O(g(x)) = C * g(x), ahol C egy konstans, ezért mondható, hogy bármely konstans --> O(1)-nek felelthető meg, és O(g(x)) = f(x) pedig csak egy felső becslés az f(x) függvényre az adott x helyen. x --> végtelen alatt. (egyenlőség jel csalóka, tudni kell a mögöttes matekot hozzá értelemezni)
Máshogy, O(1) azt jelöli, hogy a processzornak csak 1db műveletet kell elvégeznie, hogy teljesítsen egy feladatot. Az az, ha van n elemből álló bemeneti lista, akkor a dict-ből 1 elem kivétele csak 1 művelet, for-ral bejárni, már n művelet. Ilyenkor nem is kötelező, hogy a processzor műveletének lefutása független legyen n-től, az az f(x) függvény függhet n-től, de a rá adott felső becslésnek már O()-nak már függetlennek kell lennie.
Dict-ből az elem kivétele még a következkő fontos kategóriát sem éri el, ami az O(log log n), ami a prioritásos sornál tűnik fel
- igen van még kettő közte, de nem igazán találok arra infós példát, hogy hol számítana.
Ha ismered a C pointerek műkődését az segít megérteni, hogy miért is O(1), egy
a
tömb 4-ik indexét így is eléred a C-bena[4]
, ha viszont ismered a C-t, akkor tudod jól, hogy emögött valójában milyen művelet van:*(a+4)
, ahol annyit jelent, hogy az tömb-öt jelöli pointer-hez hozzáadik 4-et akkor megkapot a 4-ik elemet a tömbből (A tömb pointer mindig a tömb első elemére mutat!) -
alec.cs
tag
válasz
Siriusb #2068 üzenetére
Köszönöm: @Siriusb, @s1999xx, @sztanozs
Köszönöm a válaszokat!
Én is így gondoltam, csak a setlocal lemaradt.Még egy kérdés ezzel kapcsolatban:
- Ha ezeket a kódokat beteszem egy def-be, akkor az ott kiadott setlocal csak arra a def-re lesz érvényes. Jól gondolom, ugye?
- Ha meg meg a program elejére rakom, akkor az pedig az egész programra lesz érvényes (míg egy másik setlocal nincs kiadva)?
-
sztanozs
veterán
válasz
s1999xx #2069 üzenetére
Gondolom azért ignorálja, hogy pont a környezeti változókból eredő problémákat kiszűrje (az alkalmazás működése ne függjön attól, milyen környezetben használják, hanem attól, hogy a fejlesztő mit állítottz be). A Locale sok esetben több gondot jerlent mint hasznot...
Python module helpből:
Initially, when a program is started, the locale is the C locale, no matter what the user’s preferred locale is. There is one exception: the LC_CTYPE category is changed at startup to set the current locale encoding to the user’s preferred locale encoding. The program must explicitly say that it wants the user’s preferred locale settings for other categories by calling setlocale(LC_ALL, ''). -
Siriusb
veterán
válasz
alec.cs #2063 üzenetére
Nem olyan nagy vonalakban:
from datetime import datetime
import locale
# a szöveges adattartalom miatt megadod, milyen locale-ről van szó
locale.setlocale(locale.LC_TIME,('hu_HU', 'UTF-8'))
d = '2019. február'
#datetime-ra konvertálva:
dt_obj = datetime.strptime(d, '%Y. %B')
#ezután jöhet a tetszőleges formázás
ahogy_tetszik = datetime.strftime(dt_obj, '%Y-%m')
print(ahogy_tetszik)
Formátumok:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior@s1999xx
Kíváncsiságból nyomtam egy getlocale LC_TIME-t, és None lett a végeredmény. A getdefaultlocale() helyesen adta vissza a környezeti változót. Mi ennek az oka? Lehet annak köze hozzá, hogy nálam az egyes kategóriák eltérőek? -
Janos46
tag
válasz
s1999xx #2062 üzenetére
Koszia tippet, van pip, de:
Could not find a version that statisfies the requirement thonny (from version).
No matching distribution found for thonny.Akkor most egy altalanos kerdesem lenne, hogy a Raspberry-ben van egy - mu - nevu python program, amit kulun meg lehet talalni valahol?
-
alec.cs
tag
Sziasztok!
Hogy tudom átalakítani az alábbit az alábbi módon: '2019. február' -> '2019-02'
Tehát, '2019. február' stringből legyen '2019-02' string.
-
Janos46
tag
Sziasztok!
Van egy ASUS tinker board-om de abban levo pyhon-nal sokkal attekinthetobb a Pi3 thonny phyton-ja. Le lehet azt kulon tolteni valahonnan?
Koszi es Udv. Janos -
Lacc
aktív tag
Igen, Ordo(1) közelínek tekinthető. Python-ban ez kifejzetten Ordo(1) közelinek tekinthető (átlag).
Hash Table-ben (amire épül):
Legjobb esetben Ordo(1+lambda/2)
Legrosszabb esetben Ordo(lambda)
Lambda a kihasználási tényező (angolul load factor), lambda = elemek száma / hash tábla memória méreteBővebben link.
Eléggé függ, hogy hogyan van mögötte megvalósítva a hash-elés, ettől is függ a memória mérete.Tipp: Pythonban a dictionary létrehozása literállal:
d={}
kétszer gyorsabb, mint konstruktorrald = dict()
-
így hívunk függvényt argumentum nélkül:
foo()
amit te csinálsz, azzal nem a függvényt hívod meg, hanem a függvény objektumát. ha def-fel vagy lambdával készítesz függvényt, akkor ezt a python megcsinálja neked.>>> def foo(): pass
...
>>> foo
<function foo at 0x106aafd70>hívd csak meg a five függvényed objektumát natúr, és valami hasonlót fogsz kapni. és persze a külső föggvényeid is erre az értékre futnak ilyenkor, nem pedig arra, amit a five() helyesen meghívva visszaadna.
és persze hibaüzenetet is azért nem kapsz az egyébként hibás five hívásodra, csak legfeljebb a külső függvényeidre, mert hiába van neki megadva, hogy mivel kell meghívni, nem a függvényt hívod meg, hanem az objektumát.
-
sztanozs
veterán
így próbáld:
def five(op=''):
if op != '': return eval(op)
return str(5)
def seven(op=''):
if op != '': return eval(str(7) + op)
return str(7)
def times(param):
return str('*' + str(param))
print(seven(times(five())))mod illetve még némi synthetic sugar:
def five(op=''):
if op != '': return eval(op)
return str(5)
def seven(op=''):
if op != '': return eval(str(7) + op)
return str(7)
def times(param):
return str('*' + str(param() if callable(param) else param))
print(seven(times(five())))
print(seven(times(five))) -
kovisoft
őstag
Egyrészt nem hívhatod meg argumentum nélkül, mert a definícióban fixen ott van az op argumentum. Másrészt az argumentum nélküli meghívásnál is kellenének a zárójelek, de az is hiányzik, ezért ez így nem függvényhívás, hanem a függvény objektum lekérése:
> five('')
'5'
> five
<function five at 0x7f3901b8ae18>
> five()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: five() missing 1 required positional argument: 'op' -
sonar
addikt
Hi,
Nagyon péntek van. Van vkinek ötlete, hogy miért nem kezdődhet *-gal a visszatérő string?def five(op):
if op != '': return eval(op)
return str(5)
def seven(op):
if op != '': return eval(str(7) + op)
return str(7)
def times(param):
return str('*' + str(param))
print(seven(times(five))) -
axioma
veterán
válasz
EQMontoya #2048 üzenetére
Hat addig OK, ha egy egyezest kell vizsgalni. De mi van ha tobb hash egybeesik es meg kell keresni kozule hogy melyik a mienk, ott mar minimum valami logaritmikus tag bejon. En inkabb erre gondoltam. Ill. pl. ha stringrol beszelunk, akkor linearis a hosszaval az egyezes-vizsgalat.
De ez azert az itt felmerulo peldaknal nyilvan irrelevans. -
kovisoft
őstag
válasz
EQMontoya #2042 üzenetére
De hát ugye ez is egy ciklus, hiszen végigmegy a filter a kulcsokon.
Ha nagyon fontos, hogy O(1) lépésben meglegyen, akkor típus szerint külön dict-ben célszerű tárolni az elemeket. Ekkor viszont az összes dict-ben egyszerre történő keresés lesz macerásabb, amire lehet írni egy függvényt, ami típus szerint a megfelelő dict-ből olvas. Vagy lehet használni az unpacking operatort (**) a dict-ek összefűzésére, pl:
> dtuple={(1,2,3):1, (4,5,6):2}
> dint={7:3, 8:4}
> {**dtuple, **dint}
{(1, 2, 3): 1, (4, 5, 6): 2, 7: 3, 8: 4} -
Siriusb
veterán
Ismét egy fejtörő:
Egy dict-ben tudom egyszerűen vizsgálni, hogy van-e benne olyan key, ami pl. tuple típusú? Vagy csak ciklusban tudom megnézni? -
cousin333
addikt
válasz
Siriusb #2037 üzenetére
De azzal kezdted a mondandódat, hogy "Adott 3 osztály:", majd felsoroltad őket örökléssel együtt. Vagy örököl, vagy nem, de ezzel ne "érzékeltess" semmit, mert az félrevezető...
Ebben az esetben valóban a classmethod tűnik jó megoldásnak (esetleg a staticmethod), mindazonáltal az örökléssel is megoldható, hogy akár a saját
f1()
függvényt, akár a szülő osztályokf1()
függvényét használd tetszés szerint.A fenti példa így az alábbiak szerint módosulhat:
class A:
def f1(self):
print('f1 in Class A')
class B(A):
@classmethod
def f1(cls):
print('f1 in Class B')
class C(A):
def f1(self):
print('f1 in Class C')
def f2(self):
B.f1()
c = C()
c.f2()f1 in Class B
-
Siriusb
veterán
válasz
cousin333 #2036 üzenetére
Nem örököl feleslegesen, mert mindegyik alosztályt a ClassA-ból származtatom le. Pl. nem szeretném megörökölni ClassB.f1()-t, mert az eredetire van szükségem ClassC-ben, nem az itt felülírottra. Valamint emellett bizonyos körülmények esetén szükséges meghívni a ClassB.f1()-t ClassC-ből.
ClassC-nél csak azért írtam be a felmenők közé ClassB-t is, mert érzékelteteni szerettem volna, hogy annak egyik metódusára is szükségem van. -
cousin333
addikt
válasz
Siriusb #2032 üzenetére
Először is: a ClassC feleslegesen örököl a ClassA-tól, hiszen a ClassB már megörökölt tőle mindent.
"Szeretném ClassC-ben végrehajtatni a ClassB.f1()-et anélkül, hogy bármi mást örökölne ClassB-ből"
Erről már lekéstél, tekintve, hogy a ClassC a ClassB-ből örököl...
Feltételezve, hogy a ClassC-t úgyis példányosítod, a
super()
lesz a megoldásclass A:
def f1(self):
print('f1 in Class A')
class B(A):
def f1(self):
print('f1 in Class B')
class C(B):
def f1(self):
print('f1 in Class C')
def f2(self):
super().f1()
c = C()
c.f2()f1 in Class B
Ha pedig konkrétan a ClassA
f1()
függvényét akarod elérni, akkor:class A:
def f1(self):
print('f1 in Class A')
class B(A):
def f1(self):
print('f1 in Class B')
class C(B):
def f1(self):
print('f1 in Class C')
def f2(self):
super(B, self).f1()
c = C()
c.f2()f1 in Class A
A
classmethod
is mehet, de akkor nem kell a ClassC-nek a ClassB-ből örökölnie. -
Siriusb
veterán
Gtk kérdés, linux+primary selection(középső egérgombbal másolás):
Label, entry esetén működik, hogy az itt kijelölt szöveget középső gomb nyomásával beillesszem más alkalmazásba, viszont CellRendererText (editable=true) használatakor nem.
Mi ennek az oka, és mi a gyógyír rája? A barátom és én nem tudtunk megoldást találni.
-
Siriusb
veterán
Adott 3 osztály:
ClassA()
def f1()
ClassB(ClassA)
def f1()
ClassC(ClassB, ClassA)
def f1()
Szeretém ClassC-ben végrehajtatni a ClassB.f1()-et anélkül, hogy bármi mást örökölne ClassB-ből vagy ClassB-nek testet kéne öltenie, illetve C.f1()-re bármiféle hatása lenne. Lehetséges ez?
-
Janos46
tag
Sziasztok!
Kezdő vagyok. Hogyan kell megírni, hogy ne egymás alá, hanem egymás mellé sorba írja ki az eredményt?
Gondolom egyszerű dolog (de nem nekem).Köszi a segítséget.def sorba10():
a=1
while a<11:
print (a*5)
a=a+1
sorba10() -
kovisoft
őstag
EQMontoya megoldása talán a legegyszerűbb, legelegánsabb és leggyorsabb, viszont nem tartja meg az eredeti elemek sorrendjét. Nem tudom, hogy ez szempont volt-e, mindenesetre ha igen, és list comprehensiont akarsz használni, akkor itt egy olyan verzió, ami megtartja az elemek sorrendjét:
newArr = []
[newArr.append(i) for i in arr if i not in newArr]
print(newArr) -
Lacc
aktív tag
Hali, ezt hogyan lehet átalakitani egysorosá?
A lényeg, hogy ne másolja át a duplikált elemeket a másik tömbbe
Ez műkődiknewArr = []
for i in arr:
if i not in newArr:
newArr.append(i)De ez már nem, ez az "egysoros" változat, bocsánat nem tudom a nevét.
newArr = []
newArr = [i for i in arr if i not in newArr]Ugyanis ez a változat ugyanúgy beleteszi a duplikált elemeket is.
-
n00n
őstag
válasz
kovisoft #2014 üzenetére
beraktam egy ilyet:
except Exception as e:
logging.error("Error receiving data: " + e)De valamiét ha megszakítom a klienst ctrl+c-vel, az nem küld semmilyen exception-t, próbáltam Exception helyet socket.error-ral is.
Kliens: az csak tesztelési célzattal készült, a szerveren lenne a fő hangsúly.
-
kovisoft
őstag
Másik megjegyzésem a kliensre vonatkozik: a kliens egy cikluson belül olvassa a szervertől jövő választ, ill. küldi az új üzenetet. Viszont ha a szerver valamiért sokáig nem válaszol, akkor a recv blokkol, és ezért addig új üzenetet sem fog tudni küldeni. Ez nem feltétlen baj, hogy nincsenek egymásra eresztve az üzenetek, de innen hiányzik nekem minimum valami hibakezelés. Pl. mi történjen socket.error esetén? Lépjen ki a kliens? Vagy próbáljon nyitni egy új kapcsolatot a szerver felé? Ki kell-e timeout-olni, ha valamiért nem érkezik meg a válasz egy üzenetre? Heartbeat küldést most nem látok, de ha lenne, akkor gondolom fontos lenne, hogy egy beragadt üzenet ne blokkolja a heartbeat-et.
-
kovisoft
őstag
Nekem a thread kezelés nem teljesen kerek. Ha jól látom, minden egyes kliens csatlakozásánál létrejön egy szerver thread, ami végtelen ciklusban fut, és akkor sem lép ki, amikor a kliens lezárta a kapcsolatot (minden exception le van nyelve a ciklusban). Tehát ha sokszor csatlakoznak a kliensek, akkor ezek a thread-ek mind megmaradnak. Vagy rosszul látom?
-
n00n
őstag
Egyébként a recv-n kívül láttok még valamit a kódban, amit egyáltalán nem így kellene megvalósítani vagy lehetne jobban is, stb?
-
Siriusb
veterán
válasz
sztanozs #1999 üzenetére
és cain69, justmemory,
Köszönöm a válaszokat!
Tudom, hogy az sqlite meglehetősen behatárolt az eltérő működésű adatbázisokhoz képest, s bizonyos feladatokra optimálisabb mást választani, sőt ez nem is lehet alternatíva. Próbálom kitapasztalni, meddig lehet benne elmenni, nem volt vele eddig tapasztalatom.
Bújtam a netet, olvasgattam a leírásokat, de igazán jó megoldást nem találtam, ezért dobtam be ide a kérdést, hátha... Marad, hogy nem az adatbázis felől kezelem le a dolgot.Nagyon köszönöm, hogy mindig kifejtitek a véleményeteket, nem egy-két szóval intézitek el a választ!
-
n00n
őstag
válasz
kovisoft #2005 üzenetére
Utánaolvastam és nem vár 1024 byte-ra. A send() elküldi a küldött byte-ok számát is, így a recv azt is megkapja. Szóval ha kevesebb az nem baj,, de 1024 lehet maximum nálam. Aminél több nem is jöhet nálam.
socket.recv(bufsize[, flags])
Receive data from the socket. The return value is a bytes object representing the data received. The maximum amount of data to be received at once is specified by bufsize.Egyébként működik:
Server:
test@test-machine:~/pyproject python3 server.py
2019-02-27 13:38:47,062 - 192.168.0.2:39620 - Connected
2019-02-27 13:38:52,597 - 192.168.0.2:39620 - Message received: b'Hi\n'
2019-02-27 13:38:53,603 - 192.168.0.2:39620 - Message sent: b'Welcome\n'Client:
test@test-machine:~/pyproject python3 client.py
Hi
Response: b'Welcome\n' -
n00n
őstag
Sziasztok!
Ismerkedek a Pythonnal még csak, de írtam egy egyszerű TCP szervert/klienset. Ránéznétek és elmondanátok, hogy mi a véleményetek róla? Mit csinálnátok másképp? A cél az volt, hogy a szerver folyamatosan figyel a 9999-es porton, a kliens csatlakozik hozzá és onnantól kezdve folyamatos beszélgetés megy, szóval nincs a socket lezárva. Két fajta üzenet jöhet a klienstől:
id|name|message\n
id|name|HEARTBEAT\npl.:
001|client|test_message\n
001|client|HEARTBEAT\nHa az első akkor meghív egy localhostos php szervert a python server, ami visszaad egy választ, egyelőre mindig ugyanazt adja vissza, később a message alapján más lesz.
pl:
001|server|test_response\n
vagy ha HEARTBEAT jön, akkor a server visszaválaszol az id-val:
001|server|HEARTBEAT\n
remélem érthető
Kódok:
server.py:
https://pastebin.com/nBB578TVclient.py:
https://pastebin.com/m52wjz7R -
justmemory
senior tag
válasz
Siriusb #1998 üzenetére
Szia,
én ezt találtam a témában - C-ben elvileg van rá megoldás, de pythonból az sajnos kimaradt...
Új hozzászólás Aktív témák
Hirdetés
- BestBuy ruhás topik
- Google Chrome
- Honda topik
- Milyen videókártyát?
- Samsung Galaxy Watch7 - kötelező kör
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Házi hangfal építés
- Vezetékes FÜLhallgatók
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- Dell latitude, precision, xps, magyar világítós billentyűzetek eladóak
- 124 - Lenovo Yoga Pro 7 (14IMH9) - Intel Core Ultra 9 185H, RTX 4060 (48 hónap garancia!) (ELKELT)
- IKEA (HAVREHOJ) tablet vagy laptop tartó
- Beszámítás! Apple iPad Pro 13 2024 M4 512GB Cellular tablet garanciával hibátlan működéssel
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40AC Thunderbolt 3 docking station
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: PC Trade Systems Kft.
Város: Szeged