Я новичок в python :) Я хотел бы создать постоянный сокет. Я пытался сделать это с помощью файловых дескрипторов. Что я пробовал:
Откройте сокетное соединение
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Получить номер дескриптора файла
fd = s.fileno()
Откройте файловый дескриптор как I/O
os.open(fd)
Но я получаю OSError: [Errno 9] Bad file descriptor
Я сказал, что я новичок в python и, возможно, я ошибаюсь в реализации. Но я попробовал более простой пример os.close(s.fileno())
и получил ту же ошибку OSError: [Errno 9] Bad file descriptor
Я нашел пример написанный на ruby и протестировал его, он работает. Как создать постоянные сетевые сокеты в Unix в Руби?
Может ли кто-нибудь написать это на python для меня, чего я хочу добиться, так это: socket_start.py google.com (это напечатает номер fd) sleep 10 socket_write.py fd_number 'something' sleep 10 socket_read.py fd_number 1024
Надеюсь, вы понимаете, что я хочу сделать. Спасибо за совет!
После ваших ответов я попробовал следующий код:
1
#!/usr/bin/python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('google.com', 80))
s.send('GET /\n')
print s.fileno()
2
#!/usr/bin/python
import os
import sys
fd = int(sys.argv[1])
os.read(fd, 1024)
И ошибка OSError: [Errno 9] Bad file descriptor
Я уверен, в чем проблема (я php-разработчик). Я думаю, как и php, python удаляет мусор после закрытия скрипта. Как это решить на питоне?