Как открыть сокет на экземпляре EC2?

Я хочу отправить видео с веб-камеры с моего ноутбука на aws EC2 instance.

Я пытаюсь следовать предложениям из здесь и коду из здесь.

Проблема, с которой я столкнулся, заключается в том, что я не знаю, как открыть сокет и прослушивать входящий трафик на EC2. Мой EC2 - это экземпляр Amazon Linux free tier. Что бы я ни пробовал, я не могу заставить его работать.

Я добавил входящее правило, чтобы разрешить TCP-трафик на порту, который я хочу прослушивать.

Если это поможет, привязка к порту не кажется проблемой, но кажется, что код застревает на socket.accept() строке кода из ссылки 2.

Я был бы признателен, если бы кто-нибудь показал мне, как правильно это сделать.

1
задан 25 April 2021 в 18:53
2 ответа

При использовании inotify следует смотреть событие CLOSE _ WRITE , а не CREATE .

Если рекурсивный мониторинг не требуется, можно просмотреть incrond incrontab )

. Кроме того, можно просто запланировать rsync запуск с коротким интервалом (т.е. 1 мин) и очистить исходный dir в нерабочее время, когда можно остановить SFTP

EDIT: похоже, что библиотека выбора не предоставляет событие CLOSE _ WRITE , а только MODIFY (см. здесь ). Проблема с MODIFY заключается в том, что любая запись инициирует отдельное событие, что означает, что загрузка одного большого файла может вызвать неопределенное количество событий MODIFY .

Если вы хотите продолжить использование библиотеки уведомлений, я предлагаю вам оценить incrond , lsyncd или inotifywait

Что касается простого подхода rsync , вы, безусловно, можете завершить передачу частично загруженного файла, который, однако, будет полностью передан в следующем цикле rsync На стороне-получателе следует обязательно обрабатывать только полностью переданные файлы (вещь, которую следует проверить даже при подходе уведомления).

В более широком смысле, я настоятельно рекомендую вам протестировать с помощью репрезентативной выборки размера файла, потому что тестирование с небольшими файлами может скрыть некоторые проблемы, связанные с таймингом, которые влияют на большие файлы.

-121--480840-

Какова версия платформы .Net? При обновлении Exchange 2013 до CU23 необходимо установить .Net Framework 4.8, а затем выполнить обновление до CU23.

Не могли бы вы загрузить файл установки exchange 2013 cu23 в блоге Майкрософт и проверить, продолжается ли эта проблема?

Как ответил выше Вик Вега, вы могли бы следовать инструкциям и снова запустить программу установки exe.

-121--480844-

Если он застрял в socket.accept () , это означает, что он ожидает подключения. К какому IP-адресу вы подключаетесь в клиентском сценарии? Это не должен быть localhost или частный IP-адрес экземпляра (например, 172,31 .x.x ), а его открытый IP-адрес - его можно найти в EC2 подробностях. Также обратите внимание, что группа безопасности должна быть открыта с открытого IP-адреса вашего ноутбука (или со всех IP-адресов, но это гораздо менее безопасно).

0
ответ дан 7 May 2021 в 19:22

Попробуйте это в качестве теста (код из здесь ):

Запустите на своем сервере (настройте IP и порт в соответствии с вашим ec2):

#!/usr/bin/env python

import socket


TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 20  # Normally 1024, but we want fast response

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

conn, addr = s.accept()
print 'Connection address:', addr
while 1:
    data = conn.recv(BUFFER_SIZE)
    if not data: break
    print "received data:", data
    conn.send(data)  # echo
conn.close() 

И попробуйте отправить данные с другого компьютера, используя это ( настройте IP-адрес в соответствии с вашим общедоступным IP-адресом EC2 ):

#!/usr/bin/env python

import socket


TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024
MESSAGE = "Hello, World!"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()

print "received data:", data

Если это не сработает, опубликуйте дополнительную информацию (снимки экрана вашей безопасности setup или аналогичный).

0
ответ дан 7 May 2021 в 19:22

Теги

Похожие вопросы