В этой статье научимся работать с библиотекой socket и poplib
Для создания объекта сокета необходимо вызвать функцию socket, которая имеет 3 аргумента:
socket( [family[, type[, proto]]])
family = семейство
type = тип задающий семантику коммуникации
proto = протокол
Итак создаем сокет:
SOCK_STREAM - тип tcp
далее необходимо установить соединение с каким либо сервером
Продолжение следует:)
Для создания объекта сокета необходимо вызвать функцию socket, которая имеет 3 аргумента:
socket( [family[, type[, proto]]])
family = семейство
type = тип задающий семантику коммуникации
proto = протокол
Итак создаем сокет:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)AF_INET - семейство ipv4
SOCK_STREAM - тип tcp
далее необходимо установить соединение с каким либо сервером
s.connect(('yvision.kz', 80))функция connect имеет один аргумент, это кортеж (host, port) После соединения с сервером, мы можем передавать и принимать некоторую информацию. Рассмотрим процесс передачи и приема данных, более подробно, на примере соединения с Web-сервером (yvision.kz) и регистрации пользователя. Попробуем отправить такой пакет:
POST /ajax/register/validate.php HTTP/1.0 Content-type: application/x-www-form-urlencoded; charset=utf-8 User-Agent: Opera/9.21 (Windows NT 5.1; U;) Host: yvision.kz Content-Length: 0 rlogin=&email=&rpassword=&rpasswordconfirm=Как можно догадаться это регистрация пользователя на yvision:)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('yvision.kz', 80)) login = '' email = '' password = '' t = """POST /ajax/register/validate.php HTTP/1.0 Content-type: application/x-www-form-urlencoded; charset=utf-8 User-Agent: Opera/9.21 (Windows NT 5.1; U;) Host: yvision.kz Connection: Keep-Alive Content-Length: %(len)d rlogin=%(login)s&email=%(email)s&rpassword=%(password)s&rpasswordconfirm=%(password)s """ % {'login': login, 'email': email, 'password': password, 'len': 43 + len(login) + len(email) + (len(password) * 2)} s.send(t) response = [] while True: line = s.recv(1024) if not line: break response.append(line) print (''.join(response)) s.close() s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('yvision.kz', 80)) t = """POST /register/activate HTTP/1.0 Content-type: application/x-www-form-urlencoded; charset=utf-8 User-Agent: Opera/9.21 (Windows NT 5.1; U;) Host: yvision.kz Content-Length: %(len)d rlogin=%(login)s&email=%(email)s&rpassword=%(password)s&rpasswordconfirm=%(password)s """ % {'login': login, 'email': email, 'password': password, 'len': 43 + len(login) + len(email) + (len(password) * 2)} s.send(t) response = [] while True: line = s.recv(1024) if not line: break response.append(line) print (''.join(response))Ответ от сервера должен быть примерно таким:
HTTP/1.1 200 OK Server: nginx/0.7.0 Date: Fri, 06 Jun 2008 08:23:08 GMT Content-Type: text/html; charset=utf-8 Connection: close X-Powered-By: PHP/5.2.6 Set-Cookie: PHPSESSID=72gljj4v2dro32fqsom31637t1; path=/; domain=.yvision.kz Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache OKТеперь нужно прочитать письмо которое сервер yvision.kz отправил нам для активации, ну как? Для этого нам поможет библиотека poplib.
Продолжение следует:)