Manipulacija utičnice s Pythonom

Sadržaj
The utičnice Oni su sučelje koje nam omogućuje komunikaciju s dva ili više računala putem mreže. Zahvaljujući tome možemo stvoriti različite vrste aplikacija koje nam pomažu u prijenosu podataka putem Interneta i na taj način vidjeti rezultate koje inače ne bismo imali u stvarnom vremenu.
Jedan od najčešćih načina implementacije utičnica je putem protokola TCPTo pomaže da uz podršku operacijskog sustava prijenos putem Interneta bude normalan i bez problema.
Budući da znamo malo o osnovnom konceptu što su utičnice, počet ćemo s manipulacijom njihovih karakteristika, jedna od njih je vrijeme čekanja.
Vrijeme cekanjaThe vrijeme cekanja Omogućuje nam utvrđivanje vremena na kojem utičnica može biti pažljiva za primanje ili slanje podataka, što je vrlo važno jer ako postoji blokada aplikacije dok ovo vrijeme čeka, možemo trpjeti rizik usporavanja cijelog sustava . Zato nam je potrebno znati što je unaprijed određeno vrijeme čekanja, a također i sami ga uspostaviti radi svoje udobnosti.
Da bismo to postigli, možemo upotrijebiti nekoliko metoda koje u tu svrhu postoje u standardnoj knjižnici utičnica od Piton.
gettimeout ()Prva metoda je gettimeout () i kako mu naziv govori, nudi nam početno vrijeme čekanja utičnice koje prosljeđujemo kao parametar.
settimeout ()Druga metoda je settimeout () a njegova je funkcionalnost uspostaviti vremensko ograničenje za dotičnu utičnicu izraženo u milisekundama.
Sada ćemo stvoriti mali program koji nam omogućuje da provedemo u djelo ono što smo naučili, za to ćemo prvo stvoriti objekt tipa utičnice koji će nam poslužiti kao ispitanik, za to ćemo prenijeti obitelj i tip utičnice na konstruktor i s tim možemo primijeniti metode.
Kako bismo vidjeli promjene nakon što stvorimo utičnicu, ispisat ćemo vrijeme čekanja koje mora biti null jer se radi o novom objektu, a zatim metodom settimeout () Uspostavit ćemo novo vrijeme čekanja i napokon ćemo ispisati podatke, čime ćemo potvrditi da je sve funkcioniralo kako treba.
Da bismo sve to postigli moramo osigurati da imamo Piton instaliran u našem sustavu, u njegovoj verziji 2.7, i imati uređivač teksta koji će moći stvarati datoteke s programima, iako vježbu možemo izvesti i na konzoli, međutim to je malo neugodnije i nije ustrajno, što znači da bismo izgubili posao. Pogledajmo izvorni kod za ovaj primjer:
 #! / usr / bin / env python import socket def timeout_socket (): s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) print "Početno vrijeme čekanja je:% s"% s.gettimeout () s. settimeout (100 ) ispisati "Novo vrijeme čekanja je:% s"% s.gettimeout () ako je __name__ == '__main__': time_out_socket () 

Spremit ćemo ovo u novu datoteku pod nazivom socketTimeWait.py i izvršit ćemo ga u konzoli, rezultat bi trebao biti nešto slično sljedećem:

The pufer To je još jedna od stvari koje moramo uzeti u obzir pri radu s utičnicama, budući da je ova komponenta ta koja će pokazati količinu podataka koju u ovom trenutku možemo prenijeti do više međuspremnika Što je veća količina podataka, to također znači i veću potrošnju resursa i duže vrijeme čekanja na prijenos istih. Inače a donji tampon Predstavlja veću brzinu iako ograničava količinu podataka za prijenos, zato je to vještina koju moramo savladati.
setsockopt ()Da bi nam pomogli u manipulaciji međuspremnikom knjižnice utičnica od Piton nudi nam metodu setsockopt(), koju moramo primijeniti na instancu klase socket. Ako želimo promijeniti veličinu međuspremnika, svakako prvo moramo znati izvornu veličinu međuspremnika utičnice, za to imamo i metodu getsockopt () i koristi se na isti način kao i gore opisana metoda.
Napravit ćemo mali program koji će pokazati ono što smo prethodno objasnili, u kodu na koji ćemo vidjeti da ćemo prvo otići stvoriti par konstanti koje ćemo koristiti u svom programu i za koje će biti definirano 4096 što je vrijednost za veličinu međuspremnika koje ćemo ustanoviti.
Zatim napravimo instancu klase socket, kako bismo odmah zatražili početne veličine međuspremnika, a zatim ih ispisujemo na ekranu.
Na kraju ćemo se poslužiti metodom setsockopt () Za postavljanje željene veličine međuspremnika pomoću konstanti definiranih na početku programa, ova metoda prima tri parametra, razinu, naziv i na kraju vrijednost za međuspremnik.
Pogledajmo kod koji nam pomaže odrediti što smo objasnili, spremit ćemo ga u datoteku pod nazivom size_buffer.py:
 #! / usr / bin / env python uvozna utičnica TAM_BUFFER_SEND = 4096 TAM_BUFFER_RECEPCION = 4096 def manipulate_buffer (): sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM) # Dobijte veličinu utičnice socket.sock.soro pošaljite soopBeropt sootoba.soBuBeroto slanja sock.BotoBroj pošaljite socket.socketB Socket.socketB (socket.SOL_SOCKET, socket.SO_SNDBUF) ispis "Veličina međuspremnika [prije]:% d"% Veličina međuspremnika sock.setsockopt (socket.SOL_TCP, socket.TCP_NODELAY, 1) sock.setsockopt (socket.SOL_SOCKET, socket.SO_SNDB setsockopt (socket.SOL_SOCKET, socket.SO_RCVBUF, SIZE_BUFFER_RECEPCION) buffersize = sock.getsockopt (socket.SOL_SOCKET, socket.SO_SNDBUF) ispis "Veličina međuspremnika [Nakon]:% d" = '__ () 

Nakon što smo napisali naš program, nastavit ćemo ga izvršavati u konzoli i vidjet ćemo da dobivamo vrijednosti međuspremnika prije i nakon izmjene njegove veličine.

Kao i kod svih vrsta programa, pri radu s utičnicama nismo izuzeti od nailaženja na neke pogreške, problem koji moramo izbjeći je da nas te pogreške iznenade, jer ako to učine, naša aplikacija može funkcionirati nepredvidljivo.
Zato se moramo naučiti nositi s pogreškama, na ovaj način, ako se dogodi neočekivana situacija, naš program ne umire već nas obavještava da se nešto dogodilo, time ćemo izbjeći oštećenje podataka ili slične situacije koje utječu na stabilnost našeg programa.
Kako se nositi s tim?To postižemo pomoću blokova pokušaj - osim koje nam omogućuju procjenu situacija, općenito koje uključuju podatke izvan naše kontrole i s tim možemo djelovati u scenarijima prema odgovorima koje dobijemo. Ako padnemo u odjeljak osim bloka možemo upotrijebiti svojstvo pogreške naše instance i ispisati što se dogodilo te tako znati koji je kvar.
U sljedećem programu testirat ćemo ono što smo definirali tijekom objašnjenja. Prije svega, stvorit ćemo blok koji nas kontrolira je li pri stvaranju utičnice došlo do pogreške ili ne. Time možemo osigurati dobar početak našeg koda.
Zatim ćemo procijeniti povezanost naše aplikacije s udaljenim hostom putem određenog porta, a rukovanjem pogreškama možemo definirati prilagođenu poruku. Konačno pozivamo svoju funkciju i pomoću nje ćemo izvršiti opisane radnje.
Pogledajmo sljedeći kod koji moramo pohraniti u datoteku pod nazivom errors_socket.py a zatim ćemo ga pokrenuti u konzoli:
 #! / usr / bin / env python import sys import socket host = 'http: //python.orgt' port = '06' def error_handling (): try: s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) osim socket.error, e: print "Došlo je do pogreške pri stvaranju utičnice:% s"% e sys.exit (1) pokušaj: s.connect ((host, port)) osim socket.gaierror, e: print "Pogreška u adresi veze:% s "% e sys.exit (1) osim socket.error, e: print" Pogreška veze:% s "% e sys.exit (1) ako je __name__ == '__main__': error_handling () 

Ovdje vidimo da smo koristili knjižnicu sys kako bi se koristila metoda Izlaz () i zatvorite program nakon što se dogodi greška. Također napominjemo da je host neispravan. To je tako da možemo forsirati pogrešku i tako vidjeti poruku na ekranu. Napokon napominjemo da koristimo varijablu e za hvatanje pogreške utičnice, čime možemo dobiti stvarne detalje o tome što se dogodilo.
ZapamtitiOvdje moramo biti posebno oprezni s uvlačenje koda zapamtite to Piton Ako ne koristite zagrade, zarez i za definiranje zatvaranja blokova ovise isključivo o razmacima ili tabulatorima koje koristimo, pa ćemo ako to ne učinimo ispravno vidjeti sintaksne pogreške.
Vrlo je važno da pročitamo dokumentaciju Knjižnica utičnica Python tako da možete pronaći više i boljih načina da iskoristite svoje resurse.
Ovim smo završili ovaj vodič, shvatili smo kako Piton ima vrlo lako razumljive alate koji nam omogućuju pristup svijetu utičniceTime možemo početi programirati aplikacije koje koriste mreže za obavljanje obrade u stvarnom vremenu, kao što je dobivanje informacija s drugih strojeva na mreži ili čak s Interneta.Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave