Пример простого сервера на Python под Unix
Простой сервер, который запускается на 5000 порту, принимает данные и выводит дамп данных. Скопируйте исходный код сервера. Запустите с помощью
python server.py
и присоединитесь с помощью
telnet 127.0.0.1 5000
Попробуйте ввести данные и посмотреть на результат работы сервера. :)
#encoding:utf8
#!/usr/bin/python
import socket
import sys
FILTER=''.join([(len(repr(chr(x)))==3) and chr(x) or '.' for x in range(256)])
def dump(src, length=8):
"""
Функция отображающая дамп данных
"""
N=0; result=''
while src:
s,src = src[:length],src[length:]
hexa = ' '.join(["%02X"%ord(x) for x in s])
s = s.translate(FILTER)
result += "%04X %-*s %s\n" % (N, length*3, hexa, s)
N+=length
return result
host = '' # ip
port = 5000 # порт
backlog = 5 # ожидаемое количество ожидающих обработки запросов
size = 1024 # размер данных
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # создаём сокет для IPv4
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # устанавливаем опцию повторного использования порта для того, чтобы не ждать после останова сервера пока освободится порт
s.bind((host,port)) # ассоциировать адрес с сокетом
s.listen(backlog) # принимать запросы на установление соединения
"""
После вызова функции listen() указанный сокет будет использоваться для приема запросов на соединение.
"""
while 1:
client, address = s.accept() # принять запрос и преобразовать в соединение. client - новое соединение
print "server: got connection from %s port %d\n" % (address[0], address[1])
client.send("Welcome to server\n") # посылаем приглашение клиенту
data = client.recv(size) # получаем данные от клиента с размером size=1024
while(len(data) > 0):
if "quit" in data: break; # если клиент вводит quit, то соединение с клиентом закрывается
print "RECV: %d bytes\n" % len(data)
print dump(data)
data = client.recv(size)
client.close() # Закрыть соединение с клиентом
Небольшое руководство на английском http://ilab.cs.byu.edu/python/
Логин Регистрация
