При данной постановке вопроса сложно дать прямой ответ, т.к. нет ни кода ни какого-либо анализа и дампов.
Но можно явно отметить, что работа через сокеты подразумевает, что всю ответственность за правильную работу с сетью программист берёт на себя. Если же есть полная уверенность в корректности кода, тогда стоит обратиться к навыкам отладки или администрирования для сбора дополнительной диагностической информации.
Например, могу предположить, что не корректно ожидается проброс порта через NAT на WAN-интерфейсе, при фактической передаче пакета на LAN-интерфейс роутера. Попробуйте запустить любой сниферр, вероятно в нём увидите, пакет к роутеру на создание соединение, но ответа не будет, т.к. роутеру не ясно куда перенаправлять этот пакет. При этом обращение из внешней сети по белому IP, при настроенном пробросе, покажет, что обмен работает.