007wan |
Отправлено: 07 Июля, 2017 - 18:41:27
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Прошу создателя Kibor помочь сделать мини-программу, которая связывается с интернетом, в данном случаи будет 2 окна.
окно 1-принимает, состоит из кнопки "получить обновление", как только жмешь эту кнопку, проверяет соединение с интернетом, если нету, то пишет "проверь интернет" или что-то такое, а если есть интернет, то получает текст(ссылку) из второго окна и переходит по браузеру по умолчанию.
ЕСЛИ! текст(ссылка) отправилась ни один раз, то во-втором окне(приемнике), при нажатии кнопки, пишет "обновлений нет" типа этого.
окно 2-отправитель, состоит из кнопки и поле-эдит, в поле пишем ссылку или текст(желательно ссылку), при нажатии кнопки, отправляет текст(ссылку) в первое окно(программу) не важно на каком компьютере и если удачно отправилось, то переходит по ссылке(тексту) в первом окне(не перейдет по ссылке, пока не нажмешь кнопку"получить обновление", сначала скопирует то, что во-втором окне в поле)
Только надо, что бы команда распостранялась на все копии программы первого окна, даже если отправим текст(ссылку)из второго окна в первое окно, и перейдет по ссылке, а потом удалим программу, изначально сделав её копию, то данные должны сохраниться.
А еще вопрос: а можно ли удалить через интернет файл по имени(расширении...), использовав эту функцию, не зная его пути файла(расположение)?(Отредактировано автором: 07 Июля, 2017 - 18:47:28) |
|
|
007wan |
Отправлено: 12 Июля, 2017 - 15:43:49
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor пишет: Чем я могу помочь?
Как помочь сделать соединение клиента с сервером:
диалог 1-кнопка, эдит: пихаем туда абсолютно любой текст, но лучше ссылку.
как только жмём кнопку, он отправляет ссылку(текст) в диалог 2.
диалог 2-пустой диалог(пока что, потом сам мод. как хочу):при открытии этого диалога
получает ссылку, переходит в браузер по ней.
У меня еще ошибки с opensocket- почему нельзя сделать else? я хочу, что бы подключался к сокету, а если не получается, то выводит сообщение(что бы не ждать от пустого окна результата бесконечно)
Вот готовые диалоги:
А, еще, если можно убрать из сервера переменную char recvs[256], я вручную убирал, ошибка программы, может не так делаю.Просто мне не надо массивов для приём, я же только отправляю текст(ссылку)
сервер (Отобразить)
CODE:
int pos_size_button0[2][4];
string text_button0[2];
int flag_button0[2];
pos_size_button0[0][0]=15; pos_size_button0[0][1]=45; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
pos_size_button0[1][0]=120; pos_size_button0[1][1]=45; pos_size_button0[1][2]=100; pos_size_button0[1][3]=20;
text_button0[0]="Отправить"; text_button0[1]="Сохранить";
//////////
int pos_size_edit0[1][4];
string text_edit0[1];
pos_size_edit0[0][0]=15; pos_size_edit0[0][1]=15; pos_size_edit0[0][2]=205; pos_size_edit0[0][3]=20;
text_edit0[0]="";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0]);
//////////
showdialog(0, "
Сервер v1.0", 595, 300, 250, 178, 1, 1);
/////////////сам сервер//////////
char recvs[256];//массив в который принимаем
char sends[256];//массив который передаем
int flag_recv=0;// это флаг в котором будет 1 когда на сервер придет сообщение
enablelistenport (10005);//включили прослушку 10005 порта (самому выбирать)
recvport (#recvs[0], 256, #flag_recv);//начали слушать. в отдельном потоке
enabletimer(0);//включили таймер
loop()//цикл бота
{
mu_pause (1000);
}
function mu_pause(int p)//реализация паузы что бы не зависал на время ее скрипт
{
for (int t=gettime(); gettime()-t<p; sleep(10)){}
}
CREATE_TIMER(0, 50)
{
if (flag_button0[0]==1)
{
strcpy(#sends[0], text_edit0[0]);//заполним массив передачи текстом с второго edit
sendport (#sends[0], size(#sends[0]));//отправим
}
}
(Добавление)
клиент(получатель) (Отобразить)
CODE:
int pos_size_static0[2][4];
string text_static0[2];
pos_size_static0[0][0]=15; pos_size_static0[0][1]=15; pos_size_static0[0][2]=202; pos_size_static0[0][3]=20;
pos_size_static0[1][0]=15; pos_size_static0[1][1]=40; pos_size_static0[1][2]=160; pos_size_static0[1][3]=20;
text_static0[0]=""; text_static0[1]="";
//////////
createdialog(0, STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "
П", 466, 446, 246, 100, 1, 1);
////////////сам кликент////////////
char recvs[256];//массив в который принимаем
char sends[256];//массив который передаем
enabletimer(0);//включили таймер
int n=0;
loop()//цикл бота
{
textout(0, 50, 50, format(n), 0);
n++;
mu_pause (500);
}
function mu_pause(int p)//реализация паузы что бы не зависал на время ее скрипт
{
for (int t=gettime(); gettime()-t<p; sleep(10)){}
}
CREATE_TIMER(0, 50)
{
/* Если на одном компьютере указать 127.0.0.1
если
одна подсеть узнать ip запустив пуск выполнить cmd /k ipconfig /all
если интернеи и выделенный ip у сервака писать его ip*/
if (opensocket ("127.0.0.1", 10005)==1)//откроем сокет на 10005 порту сервера (самому выбирать)
{
if (recvhtml(#recvs[0], 256)>0) messagebox(format(#recvs[0]));, "Ответ", 0);//когда примем ответ запишем ответ в edit
}
closesocket ();//Закрываем сокет
}
(Добавление)
Только можно так еще: если я отправил ссылку(текст) из сервера, то будет отправлять бесконечно, но с паузами(что бы не лагало). |
|
|
007wan |
Отправлено: 12 Июля, 2017 - 18:46:06
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
да, работает. конечно с некими мелкими недостатками, но они не мешают, спасибо.
(Добавление)
Кибор, почему если открыть сервер и потом сразу клиент, отправить текст из сервера, клиент выполнить работу свою и откроет как ссылку, только при закрытии клиента, и вновь открытии сам клиент висит. Я хочу сделать сервер, как бы постоянным, что бы всегда работал, пока не закрою его сам. |
|
|
|