Код:
#!/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')
а "netstat | grep 20123" говорит
Код: Выделить всё
tcp 0 0 desktop.localdoma:20123 desktop.localdomai:4543 TIME_WAIT
через какое-то время "netstat | grep 20123" ничего не говорит сервер снова можно запускать.
вопросы:
0. у меня код не верно написан, в клиентской части нужно что-то еще перед выходом делать или нет (или наоборот в серверной)?
1. это вообще нормально, что клиент может помешать запуску сервера? 0_o
а теперь совсем нубский вопрос: все эти сокеты вообще где создаются, в оперативке? как создать сокет-файл (у которого еще права на "s" начинаются) и работать с ним (ткинте меня носом в простой пример что ли)? в мануале я нашел что-то про AF_UNIX, но как им пользоваться мне не найти что-то.