Служба программирования C ++ - PullRequest
0 голосов
/ 05 октября 2019

У меня есть личный сервер, и я хочу добавить к нему несколько новых функций. Это сервер Windows, работающий под управлением Windows Server 2019. Основная программа написана мной на c ++, но это просто ядро, и я не могу получить к нему доступ. Интернет. Он должен получить строку с веб-страницы и вернуть ей строку. Мой старый способ - использовать ASP для создания файла для хранения строки с веб-страницы и использовать мою программу на c ++ для ее перезаписи. Но если сервер получит две задачи вв то же время результатом станет беспорядок. Мой интернет-провайдер заблокировал порт 80, поэтому я использую порт 8012 для запуска своего веб-сайта. Мой маршрутизатор не может подключиться ко многим внешним портам (на сервере также есть служба FTP и служба почты.) поэтому я могу использовать только порт 8012.Что мне делать? Должен ли я написать C ++ HTTP-сервер? Информация о сервере:

Сервисный порт, внутренний порт, внешнее ПО

WEB 80 8012 IIS

FTP 21 21 Serv-U

FTP-pasv 6000-6009 6000-6009 Serv-U

POP3 110 9110

SMTP 25 9025

RemoteDesktop 3389 3389 Windows

1 Ответ

0 голосов
/ 14 октября 2019

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

    function GetValue(id)
    {
        return document.getElementById(id).value;
    }
    function SetValue(id,val)
    {
        document.getElementById(id).value=val;
        return;
    }

function GetTRValue() //Time-Random value,avoid messing up request
{
    var rdm=Math.Random().toString(16);
    var dt=new Date();
    var time=dt.getTime().toString(10);
    var tr=rdm+time;
    return tr;
}

function EncodeRequest()
{
    var req=new XMLHttpRequest();
    req.onreadystatechange=function(){
        if(req.readyState==4 && req.status==200)
        {
            SetValue('code',req.responseText);
        }
        else if(req.readyState==4 && req.status!=200)
        {
            alert('Server error:'+req.status);
        }
    }
    req.open('POST','/base/base.asp',true);
    req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    req.send('type=encode&code='+GetValue('base')+'&srcstr='+GetValue('str')+'&rdm='+GetTRValue());
    return;
}

function DecodeRequest()
{
    var qer=new XMLHttpRequest();
    qer.onreadystatechange=function(){
        if(qer.readyState==4 && qer.status==200)
        {
            SetValue('str',qer.responseText);
        }
        else if(qer.readyState==4 && qer.status!=200)
        {
            alert('Server error:'+qer.status);
        }
    }
    qer.open('POST','/base/base.asp',true);
    qer.setRequestHeader('Content-type','application/x-www-form-urlencoded');
    qer.send('type=decode&code='+GetValue('base')+'&srcstr='+GetValue('code')+'&rdm='+GetTRValue());
    return;
}

В моем ASP-файле я просто создаю папку с именем «Time-Random Value» и помещаю сюда файл запроса. Затем дождитесь ответов от программы C ++, прочитайте ееи удалите папку. В моей программе на C ++ я сканирую папки и записываю ответы в одну и ту же папку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...