.


:




:

































 

 

 

 


ә Python-ғ қ




ұ

IP- қ - IP- ғ ү . ұ , . TCP/IP ғ ә (ә қ ә ), UDP/IP ғ ә () .

Ә IP- (IP-) . қ қ ә өң IP- . қ ү. қ ү ң ә ө қғ ө (listen) қ . IP- ұ ә (ұ) ң қ (ңғ) ү . TCP/IP құ ү : ғ, қ ө. , ә ң IP- ә ғ , қ IP- ә ө ғ .

Socket Python-ғ ұ ү қ .

OSI ң ң:

қ

қ қ ғ. қ ң қ.

қ (Ethernet, PPP, ATM ә ..)

қ ұ , қ ң ғ қ ң , ғ ү ә ә .

(IP)

қғ ү ү .

қ (TCP, UDP ә ..)

ү ғ ң ө қ .

қ

қ қ қ. , ә қ.

Ұ ()

әң ә қ , қ құ ұ.

Қ (HTTP, FTP, SMTP, NNTP, POP3, IMAP ә ..)

қ қ қ. ү .

Ә қ ң . Socket UNIX ә Internet қ. Ә ө ң ә ң ү . ұ Internet қғ, ә қ TCP/IP UDP/IP , қ құ ү socket.AF_INET ұқ ө.

қ - ұ қ . қ ә . құғ (host) , қ ұ , қ ұ , қ.

:

import socket, string

def do_something(x):

lst = map(None, x);

lst.reverse();

return string.join(lst, "")

HOST = "" # localhost

PORT = 33333

srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

srv.bind((HOST, PORT))

while 1:

print " , ң ұ 33333"

srv.listen(1)

sock, addr = srv.accept()

while 1:

pal = sock.recv(1024)

if not pal:

break

print " %s:%s:" % addr, pal

lap = do_something(pal)

print " %s:%s:" % addr, lap

sock.send(lap)

sock.close()

:

import socket

HOST = "" # қққғ (localhost)

PORT = 33333 # қққғ

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

sock.connect((HOST, PORT))

sock.send("")

result = sock.recv(1024)

sock.close()

print ":", result

:

ә ғ: ө қ.

ң , қ. ғ 33333 ә 127.0.0.1 . ң (listen()). ә ққ , (accept()) қ. accept() ә, қ (Ip- ұ, қққғ қ ), Socket- ә қққғ ң ң ұ қ. ү recv() ә send() ә қғ . recv()- ө . ә ү.

ң ғ ү қ. connect() ә қққғ ( қ). ә send() ә ә, қ ұқ, recv() ә .

Socket қғ . қ, ү (DNS) ұ ү :

>>> import socket

>>> socket.gethostbyaddr('www.onego.ru')

('www.onego.ru', [], ['195.161.136.4'])

>>> socket.gethostbyaddr('195.161.136.4')

('www.onego.ru', [], ['195.161.136.4'])

>>> socket.gethostname()

'rnd.onego.ru'

Python ң ұқ socket.getservbyname() . - ө құғ ө ө ү :

>>> for srv in 'http', 'ftp', 'imap', 'pop3', 'smtp':

... print socket.getservbyname(srv, 'tcp'), srv

...

80 http

21 ftp

143 imap

110 pop3

25 smtp

қ , ү, ,ә .. ө ү ө ө ұқ ұ. Socket ң қ құ қ қ ү.

Smtplib

ғ ә ө SMTP (Simple Mail Transfer Protocol, ң қ ) . SMTP ә ESMTP (SMTP ң ұқ) RFC 821 ә RFC 1869- ғ. SMTP- ұ ү smtplib . SMTP- ү, SMTP ө SMTP- қ ү құ :

 

smtplib.SMTP([host[, port]])

 

host ә port , қ , ә SMTP-ң . Ү port=25. host , ө , ә connect() ә қғ . SMTP ң ө қ ғ SMTP-ң ү ә , қ ү ә sendmail() ә quit() ә қ :

# -*- coding: cp1251 -*-

from smtplib import SMTP

fromaddr = "[email protected]" # ʳ

toaddr = "[email protected]" # ʳ

message = """From: Student <%(fromaddr)s>

To: Lecturer <%(toaddr)s>

Subject: From Python course student

MIME-Version: 1.0

Content-Type: text/plain; charset=Windows-1251

Content-Transfer-Encoding: 8bit

ә! Python ү.

"""

connect = SMTP('mail.onego.ru')

connect.set_debuglevel(1)

connect.sendmail(fromaddr, toaddr, message % vars())

connect.quit()

, toaddr (To ө) ә ә ү. ә қ ә SMTP- SMTP-ң . ғ ұғ ә ғ (ұ ң 1- ң ):

send: 'ehlo rnd.onego.ru\r\n'

reply: '250-mail.onego.ru Hello as3-042.dialup.onego.ru [195.161.147.4],

pleased to meet you\r\n'

send: 'mail FROM:<[email protected]> size=270\r\n'

reply: '250 2.1.0 <[email protected]>... Sender ok\r\n'

send: 'rcpt TO:<[email protected]>\r\n'

reply: '250 2.1.5 <[email protected]>... Recipient ok\r\n'

send: 'data\r\n'

reply: '354 Enter mail, end with "." on a line by itself\r\n'

send: 'From: Student <[email protected]>\r\n... '

reply: '250 2.0.0 iBPFgQ7q028433 Message accepted for delivery\r\n'

send: 'quit\r\n'

reply: '221 2.0.0 mail.onego.ru closing connection\r\n'

 

ұ ( ққғ) ұғ ә SMTP- (EHLO, MAIL FROM, RCPT TO, DATA, QUIT), (send) ө , , қ қ ә (reply).

SMTP-ң , quit () қ.

, SMTP ө : ұ ү ң, SMTP-ң ә , ә (helo(), ehlo(), expn(), help(), mail(), rcpt(), vrfy(), send(), noop(), data()).

 

docmd() әң ө SMTP- . , - қ ө ү қ қ SMTP ө қ қ , қ ө:

from smtplib import SMTP

connect = SMTP('mx.abcde.ru')

connect.set_debuglevel(1)

connect.docmd("ETRN rnd.abcde.ru")

connect.quit()

 

ұ қ mx.abcde.ru rnd.abcde.ru қ ғ ә ө ұ ә қ ғ қғ .

 

smtplib.SMTP ұ ү ғ ү. ң ғ ө :

smtplib.SMTPException

қ ң ғ қ .

smtplib.SMTPServerDisconnected

қ ү ( ғ).

smtplib.SMTPResponseException

SMTP- ң қ ғ ү қ .

 

smtplib.SMTPSenderRefused

iii қ

smtplib.SMTPRecipientsRefused

қ қғ.

smtplib.SMTPDataError

ғ .

smtplib.SMTPConnectError

қ.

smtplib.SMTPHeloError

HELO ұ қ.

 

Poplib

ғ - POP3 (Post Office Protocol, қ ) қ ә қ ү қ ( RFC 1725 қғ).

қ ұ ү ә, ғ қғ ә, SMTP-ң ө . POP3 poplib POP3 қ ғ :

poplib.POP3(host[, port])

ұғ host - POP3-ң , port - (ү 110), pop_obj- POP3- ұ қ ү .

POP3- ұ ү ә ө.

import poplib, email

# Қң i i:

SERVER = "pop.server.com"

USERNAME = "user"

USERPASSWORD = "secretword"

p = poplib.POP3(SERVER)

print p.getwelcome()

# iiiң ңi

print p.user(USERNAME)

print p.pass_(USERPASSWORD)

# ң

response, lst, octets = p.list()

print response

for msgnum, msgsize in [i.split() for i in lst]:

print " %(msgnum)s %(msgsize)s" % vars()

print "UIDL =", p.uidl(int(msgnum)).split()[2]

if int(msgsize) > 32000:

(resp, lines, octets) = p.top(msgnum, 0)

else:

(resp, lines, octets) = p.retr(msgnum)

msgtxt = "\n".join(lines)+"\n\n"

msg = email.message_from_string(msgtxt)

print "* : %(from)s\n* : %(to)s\n* : %(subject)s\n" % msg

# msg ( )

 

#

print p.quit()

 

:

Ә, қ ү қ .

 

ғ ғ:

 

+OK POP3 pop.server.com server ready

+OK User name accepted, password please

+OK Mailbox open, 68 messages

+OK Mailbox scan listing follows

1 4202

UIDL = 4152a47e00000004

* : [email protected]

* : [email protected]

* : KL Online Activation

...

+OK Sayonara

ә қ POP3 ң өң ә ө ғ:

Ә POP3
getwelcome()   POP3- s .
user(name) USER name name қ ө USER .
pass_(pwd) PASS pwd PASS қ ө . ә QUIT ң қ ә ұғ.
apop(user, secret) APOP user secret APOP .
rpop(user) RPOP user RPOP ә
stat() STAT әii қ қ. ұғ m , l әң ө.
list([num]) LIST [num] (resp, ['num octets',...]) ғ қ, num, "+OK num octets" ө, ө.
retr(num) RETR num num ө ү ә (resp, lst, octets) ң қ
dele(num) DELE num Num ө ө
rset() RSET ө .
noop() NOOP ( қ)
quit() QUIT ө. қ қ ө ( ө) ә қ әң құ .
top(num, lines) TOP num lines RETR- ұқ, қ қ ә ң lines ү. (resp, lst, octets) қ.
uidl([num]) UIDL [num] "unique-id listing"- ққғ ( ң ). ә : (resp, lst, octets), num ө, ә "+OK num uniqid", ө. Lst "+OK num uniqid" ү ұ.

 

ұ num ө ( қ ғ ө), resp , ү қ, ә ү +OK- (ә poplib.proto_error ғ ). Octets қғ әң . uniqid қғ .

POP3- ұ ү ң ұ: , ә ң. ң, POP3- құғ , USER, PASS ( APOP RPOP) ұқ . қ ә ә ң . ұ қғ ғ. ң ң QUIT қ, POP3- қң қ ә ң, ғ ө ү ө.





:


: 2017-01-28; !; : 1519 |


:

:

, , 1:10
==> ...

1836 - | 1751 -


© 2015-2024 lektsii.org - -

: 0.06 .