Форум сайта python.su
1. Пишу простенький сервер:
#!/bin/env python # -*- coding: utf-8 -*- HOST = '' PORT = 20123 from socket import socket from time import strftime server = socket() server.bind((HOST, PORT)) try: while 1: server.listen(1) sock, address = server.accept() data = sock.recv(1024) if data=='gettime': print 'sending time' sock.send(strftime('%k:%M:%S')) sock.close() except: server.close()
#!/bin/env python # -*- coding: utf-8 -*- HOST = '' PORT = 20123 from socket import socket client = socket() client.connect((HOST, PORT)) client.send('gettime') data = client.recv(1024) client.close() if data: print data
Traceback (most
recent call last):
File "./server.py", line 11, in ?
server.bind((HOST, PORT))
File "<string>", line 1, in bind
socket.error: (98, 'Address already in use')
tcp 0 0 desktop.localdoma:20123 desktop.localdomai:4543 TIME_WAIT
server = socket.socket(socket.AF_INET, socket.SO_REUSEADDR)
Отредактировано (Сен. 8, 2007 08:56:33)
Офлайн
Pr0b3LРабота с ними почти ничем не отличается от работы с tcp сокетами. Отличия только в параметрах конструктора сокета и подключения.
2. как создать и работать с unix-сокетами (сокеты-файлы)? на сколько я понял нужно ковырять в сторону AF_UNIX, но как им пользоваться я так и не понял, или ищу я плохо.
from socket import * uds_path = '/tmp/myuds' uds = socket(AF_UNIX, SOCK_STREAM) uds.bind(uds_path) # Дальше все аналогично tcp серверу uds.listen(1) ...
uds=socket(AF_UNIX, SOCK_STREAM) uds.connect(uds_path) # Дальше все аналогично tcp клиенту ...
#!/bin/env python # -*- coding: utf-8 -*- HOST = '' PORT = 20123 import socket from time import strftime server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((HOST, PORT)) try: while 1: server.listen(1) sock, address = server.accept() data = sock.recv(1024) if data=='gettime': print 'sending time' sock.send(strftime('%k:%M:%S')) finally: server.close()
Офлайн
ух ты как оперативно! большущее спасибо :)
Офлайн