def do_something(x): lst = map(None, x); lst.reverse(); 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

def do_something(x): lst = map(None, x); lst.reverse();

Поиск

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()

 

возвращает пару- Socket-объект и адрес удаленного компьютера,устанавливающего соединение(пара- IP-адрес,порт на удаленной машине).После этого можно применять


 


методы 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':

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 62; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.01 с.)