---
title: "socket + poplib"
description: "В этой статье научимся работать с библиотекой socket и poplib Для создания объекта сокета необходим..."
author: "p0is0n"
published: "2008-06-06T03:13:47+00:00"
modified: "2008-06-06T03:13:47+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/socket-poplib-441"
markdown_url: "https://yvision.kz/post/socket-poplib-441/markdown"
site_name: "Yvision.kz"
---

# socket + poplib

> В этой статье научимся работать с библиотекой socket и poplib Для создания объекта сокета необходим...

В этой статье научимся работать с библиотекой socket и poplib

Для создания объекта сокета необходимо вызвать функцию 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.

Продолжение следует:)

---

Source: [https://yvision.kz/post/socket-poplib-441](https://yvision.kz/post/socket-poplib-441)