прослушивать порт и отвечать если пришел заданный текст
Модератор: Fastman
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
прослушивать порт и отвечать если пришел заданный текст
сильно сложное оное сделать?
а то сделал прогруммку для винды, но она парсила xml страничку апача... но апач не выдержал почти 2000 коннектов в одно и тоже время... и слег
(не считая гаджета, который даже хз, стоколько пользователей установило)
можно ли демона написать который слушал бы порт(указанный в конфиг файле, если возможно)
и отвечал, если с какого то ip пришел текст(запрос)....
на винде оказалось не сложно клиента написать...а вот как на bsd дело обстоит?
*не сложно... на протяжении месяца
а то сделал прогруммку для винды, но она парсила xml страничку апача... но апач не выдержал почти 2000 коннектов в одно и тоже время... и слег
(не считая гаджета, который даже хз, стоколько пользователей установило)
можно ли демона написать который слушал бы порт(указанный в конфиг файле, если возможно)
и отвечал, если с какого то ip пришел текст(запрос)....
на винде оказалось не сложно клиента написать...а вот как на bsd дело обстоит?
*не сложно... на протяжении месяца
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Alex Keda
- стреляли...
- Сообщения: 35456
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
нгинкс, наверное выдержал бы...
Убей их всех! Бог потом рассортирует...
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
а демоном сложно будет?
раз уж быть широкопрофильным "специалистом" не могу... но дилетантом возможно:)
раз уж быть широкопрофильным "специалистом" не могу... но дилетантом возможно:)
-
- проходил мимо
Re: прослушивать порт и отвечать если пришел заданный текст
за час пишется такая смешная программка
только я не понял в чем вопрос, это вроде раздел С++ а не работа
только я не понял в чем вопрос, это вроде раздел С++ а не работа
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
ну в разделе языков программирования и пишу, потому сам буду писать, по крайней мере постараюсь...
а в разделе с++, вроде gcc это компилятор c++
или нет?
а в разделе с++, вроде gcc это компилятор c++
или нет?
-
- проходил мимо
Re: прослушивать порт и отвечать если пришел заданный текст
вообще раздел программирование это не блогну в разделе языков программирования и пишу, потому сам буду писать,
когда будете писать, и столкнетесь с трудностями или ошибками, их и пишите
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
на просторах инета нашел:
собралось без проблем:
запускается тоже нормально, но не в фоне....
также порт повидимому слушается:
конекчусь:
тут же в консоли выдает при вводе любой буквы в телнет:
честно так и не разобрался как сие работает,
что такое "инкриминирует"?
подразумаю замену символа:
потому что:
а почему закрывает тогда соединение?
или так и должно?
но раз написано что работает, значит работает..
несколько вопросов:
как вывести номер порта в конфиг файл
как демоном запускать программу?
точнее как запускать демоном знаю, куда записать daemon(0,0); чтобы программа запускалась в фоне...
просто сервер который принимает символ инкрементирует его и возвращает (для пробы пера был сделан и рповерен телнетом) работает:
Код: Выделить всё
radist04ka@ cat tempdaemon.c
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int err=-1;
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
err=(bind(server_sockfd, (struct sockaddr *) &server_address, server_len));
if(err!=0) printf("bind error!\n");
else printf("bind is ok\n");
err=-1;
err=(listen(server_sockfd, 5));
if(err!=0) printf("listen error!\n");
else printf("listen is ok\n");
while(1)
{
char ch;
printf("server waiting\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *) &client_address, &client_len);
read(client_sockfd, &ch, 1);
ch++;
write(client_sockfd, &ch, 1);
close(client_sockfd);
}
}
radist04ka@
Код: Выделить всё
radist04ka@ gcc -o TempRadik tempdaemon.c
radist04ka@ ls -l
total 12
drwxrwxr-x 2 radist www 512 13 фев 01:44 ./
drwxr-xr-x 9 radist www 1536 13 фев 01:20 ../
-rwxrwxr-x 1 radist www 6122 13 фев 01:33 TempRadik*
-rw-rw-r-- 1 radist www 1358 13 фев 01:21 tempdaemon.c
Код: Выделить всё
radist04ka@ ./TempRadik
bind is ok
listen is ok
Код: Выделить всё
radist04ka@ sockstat | grep Temp
radist TempRadik 97222 3 tcp4 *:9734 *:*
Код: Выделить всё
radist04ka@ telnet 127.0.0.1 9734
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
f
gConnection closed by foreign host.
radist04ka@ telnet 127.0.0.1 9734
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
e
fConnection closed by foreign host.
radist04ka@ telnet 127.0.0.1 9734
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
j
kConnection closed by foreign host.
Код: Выделить всё
radist04ka@ ./TempRadik
bind is ok
listen is ok
server waiting
server waiting
server waiting
server waiting
server waiting
server waiting
^C
что такое "инкриминирует"?
подразумаю замену символа:
потому что:
Код: Выделить всё
Escape character is '^]'.
f
g
Escape character is '^]'.
e
f
Escape character is '^]'.
j
k
или так и должно?
но раз написано что работает, значит работает..
несколько вопросов:
как вывести номер порта в конфиг файл
как демоном запускать программу?
точнее как запускать демоном знаю, куда записать daemon(0,0); чтобы программа запускалась в фоне...
-
- проходил мимо
Re: прослушивать порт и отвечать если пришел заданный текст
не понимаю как вы будете что то писать
а темболее говорите что написали под виндовс
если вообще даже в основах С/C++ не разбираетесь
после отправки стоит close()
чесно говоря не понимаю вопроса
это елементарно для программиста
?
а темболее говорите что написали под виндовс
если вообще даже в основах С/C++ не разбираетесь
принявшийся символ увеличивается на единицу и отдается обратночто такое "инкриминирует"?
ну так код смотритеа почему закрывает тогда соединение?
после отправки стоит close()
записать в конфиг?как вывести номер порта в конфиг файл
чесно говоря не понимаю вопроса
это елементарно для программиста
man daemonкак демоном запускать программу?
?
там же в мане и пример должен бытьточнее как запускать демоном знаю, куда записать daemon(0,0); чтобы программа запускалась в фоне...
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
в данном случае
символ - есть байт, а байт суть тип данных объемом один октет, один из битов которого выделен под знак, а остальные - под хранение целого значения
если ты не понял - перечитай выше написанное, считая количество прочтений следующим образом если программа завершается с кодом ошибки отличным от нуля - значит ты не постиг дзен символов. начни сначала
P.S. ночью хочется постебаться xD
P.P.S. char хранит один переменную, которая может интерпретироваться как код символа, а может - как числовое значение в пределах от -128 до 127. посему к нему можно применять все операци целочисленной арифметики, в частности инкремент.
P.P.P.S. для начала пойми, что есть суть "даемон" и только потом юзай высокоуровневую шелуху.
символ - есть байт, а байт суть тип данных объемом один октет, один из битов которого выделен под знак, а остальные - под хранение целого значения
если ты не понял - перечитай выше написанное, считая количество прочтений следующим образом
Код: Выделить всё
int main() {
char a = 0;
while (a < 128) {
// прочитай написанное выше
++a;
}
return 0;
}
P.S. ночью хочется постебаться xD
P.P.S. char хранит один переменную, которая может интерпретироваться как код символа, а может - как числовое значение в пределах от -128 до 127. посему к нему можно применять все операци целочисленной арифметики, в частности инкремент.
P.P.P.S. для начала пойми, что есть суть "даемон" и только потом юзай высокоуровневую шелуху.
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
не успел написать как уже ответили..
нашел еще это:
работает так же:
возвращает:
нашел еще это:
Код: Выделить всё
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
// 2. Open socket for this SERVER
unlink("server_socket");
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 3. Socket name for SERVER
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
bind(server_sockfd, (struct sockaddr *)&server_address, server_len);
// 4. Connecting socket for SERVER
listen (server_sockfd, 5);
while(1) {
char *ch;
printf("server waiting\n");
// 5. I/O socket "SOCKFD"
client_len = sizeof (client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);
read(client_sockfd, &ch, 1);
printf("%c , %d\n",ch,ch);
write(client_sockfd, &ch, 1);
close(client_sockfd);
}
}
Код: Выделить всё
radist04ka@ telnet 127.0.0.1 9734
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
pass
pConnection closed by foreign host.
radist04ka@ telnet 127.0.0.1 9734
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
bla bla bla
bConnection closed by foreign host.
radist04ka@
Код: Выделить всё
radist04ka@ ./TempR
server waiting
p , -1077941136
server waiting
b , -1077941150
server waiting
t , -1077941132
server waiting
^C
radist04ka@
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
парсинг xml по сравнению с этим....а темболее говорите что написали под виндовс
Код: Выделить всё
не понимаю как вы будете что то писать
если вообще даже в основах С/C++ не разбираетесь
совершенно с вами согласен ) с одной поправкой, я ни в коем случае не программист...записать в конфиг?
чесно говоря не понимаю вопроса
это елементарно для программиста
покапаем, будем пробовать...там же в мане и пример должен быть
можно поподробнее и более понятным языком...в данном случае
символ - есть байт, а байт суть тип данных объемом один октет, один из битов которого выделен под знак, а остальные - под хранение целого значения
если ты не понял - перечитай выше написанное, считая количество прочтений следующим образом
ниче не понялP.P.S. char хранит один переменную, которая может интерпретироваться как код символа, а может - как числовое значение в пределах от -128 до 127. посему к нему можно применять все операци целочисленной арифметики, в частности инкремент.
угу, а мне над самим собой уж как хочется...P.S. ночью хочется постебаться
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
ты не постиг дзен символов xD
char это переменная длиной 8 битов. и ты можешь эти 8 битов использовать как твоей душе угодно. сумеешь в них запихнуть черта лысого - пожалуйста!
но по умолчанию - там хранится код символа - числовое значение - в пределах от -128 до 127
из кодаполучается следующий ассемблерный код(размещение элементов массива в памяти): последний столбец - есть как раз элементы массива. четко видно что за чем следует
char это переменная длиной 8 битов. и ты можешь эти 8 битов использовать как твоей душе угодно. сумеешь в них запихнуть черта лысого - пожалуйста!
но по умолчанию - там хранится код символа - числовое значение - в пределах от -128 до 127
из кода
Код: Выделить всё
[12:13]~/# cat test.c
int main() {
char a[10]={ 0, 1, 2, 126, 127,-128, -127, -126, -2, -1};
return 0;
}
Код: Выделить всё
mov byte ptr [ebp-0Eh], 0
mov byte ptr [ebp-0Dh], 1
mov byte ptr [ebp-0Ch], 2
mov byte ptr [ebp-0Bh], 7Eh
mov byte ptr [ebp-0Ah], 7Fh
mov byte ptr [ebp-9], 80h
mov byte ptr [ebp-8], 81h
mov byte ptr [ebp-7], 82h
mov byte ptr [ebp-6], 0FEh
mov byte ptr [ebp-5], 0FFh
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
вот:
сделан из двух исходников + один человек помог доделать
в консоли:
в программе:
теперь, как вывести порт, название файла откуда строчку брать в конфиг-файл...
сделан из двух исходников + один человек помог доделать
Код: Выделить всё
radist04ka@ cat tempd.c
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
int err=-1;
int server_sockfd, client_sockfd;
int server_len, client_len;
int MAX_LINE_LEN;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
err=(bind(server_sockfd, (struct sockaddr *) &server_address, server_len));
if(err!=0) printf("bind error!\n");
else printf("bind is ok\n");
err=-1;
err=(listen(server_sockfd, 5));
if(err!=0) printf("listen error!\n");
else printf("listen is ok\n");
while(1)
{
char *path = filetest;
char buf[MAX_LINE_LEN];
FILE *file;
int nread;
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *) &client_address, &client_len);
nread = read(client_sockfd, &buf, sizeof(buf) - 1);
if (nread < 1) {
printf("read: %s. closing connection\n", strerror(errno));
close(client_sockfd);
continue;
}
buf[nread] = 0;
printf("server got: \"%s\"\n", buf);
if (strncmp(buf, "TEST", 4) == 0) {
strncpy(buf, "OK\n", sizeof(buf) -1);
buf[sizeof(buf) - 1] = 0;
} else if(strncmp(buf, "GETTEST", 7) == 0) {
file = fopen(path, "r");
if (file == NULL ||
fgets(buf, sizeof(buf), file) == NULL) {
strncpy(buf, "ERR\n", sizeof(buf) -1);
buf[sizeof(buf) - 1] = 0;
}
if (file)
fclose(file);
} else {
printf("bad command from client, closing connection\n");
close(client_sockfd);
continue;
}
printf("server answer: \"%s\"\n", buf);
write(client_sockfd, &buf, strlen(buf));
close(client_sockfd);
}
}
Код: Выделить всё
radist04ka@ sockstat | grep Temp
radist TempPrg 25008 3 tcp4 *:9734 *:*
radist04ka@ telnet 192.168.50.241 9734
Trying 192.168.50.241...
Connected to 192.168.50.241.
Escape character is '^]'.
test
Connection closed by foreign host.
radist04ka@ telnet 192.168.50.241 9734
TTrying 192.168.50.241...
Connected to 192.168.50.241.
Escape character is '^]'.
TEST
Connection closed by foreign host.
radist04ka@ telnet 192.168.50.241 9734
Trying 192.168.50.241...
Connected to 192.168.50.241.
Escape character is '^]'.
TEST
OK
Connection closed by foreign host.
radist04ka@ telnet 192.168.50.241 9734
Trying 192.168.50.241...
Connected to 192.168.50.241.
Escape character is '^]'.
TEST
OK
Connection closed by foreign host.
radist04ka@ telnet 192.168.50.241 9734
Trying 192.168.50.241...
Connected to 192.168.50.241.
Escape character is '^]'.
GETTEST
:99.9:99.9:99.9:999:999:88.88:Connection closed by foreign host.
radist04ka@ telnet 192.168.50.241 9734
Trying 192.168.50.241...
Connected to 192.168.50.241.
Escape character is '^]'.
GETTEST
:99.9:99.9:99.9:999:999:88.88:Connection closed by foreign host.
radist04ka@
Код: Выделить всё
radist04ka@ ./TempPrg
bind is ok
listen is ok
server got: "test
"
bad command from client, closing connection
server got: "TTEST
"
bad command from client, closing connection
server got: "TEST
"
server answer: "OK
"
server got: "TEST
"
server answer: "OK
"
server got: "GETTEST
"
server answer: ":99.9:99.9:99.9:999:999:88.88:"
server got: "GETTEST
"
server answer: ":99.9:99.9:99.9:999:999:88.88:"
^C
radist04ka@
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
сделал так:
честно говоря тока одно изменение:
работать в фоне оно начало конечно...
но тут вылетает глюк:
проходит нормально
а вот:
выводит ошибку...
как мне обьснили что daemon(0,0); надо писать всегда перед циклом... а почему тогда ругается...
Код: Выделить всё
radist04ka@ cat tempd.c
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
int main()
{
int err=-1;
int server_sockfd, client_sockfd;
int server_len, client_len;
int MAX_LINE_LEN;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
err=(bind(server_sockfd, (struct sockaddr *) &server_address, server_len));
if(err!=0) printf("bind error!\n");
else printf("bind is ok\n");
err=-1;
err=(listen(server_sockfd, 5));
if(err!=0) printf("listen error!\n");
else printf("listen is ok\n");
daemon(0,0);
while(1)
{
char *path = "filetest";
char buf[MAX_LINE_LEN];
FILE *file;
int nread;
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *) &client_address, &client_len);
nread = read(client_sockfd, &buf, sizeof(buf) - 1);
if (nread < 1) {
printf("read: %s. closing connection\n", strerror(errno));
close(client_sockfd);
continue;
}
buf[nread] = 0;
printf("server got: \"%s\"\n", buf);
if (strncmp(buf, "TEST", 4) == 0) {
strncpy(buf, "OK\n", sizeof(buf) -1);
buf[sizeof(buf) - 1] = 0;
} else if(strncmp(buf, "GETTEST", 7) == 0) {
file = fopen(path, "r");
if (file == NULL ||
fgets(buf, sizeof(buf), file) == NULL) {
strncpy(buf, "ERR\n", sizeof(buf) -1);
buf[sizeof(buf) - 1] = 0;
}
if (file)
fclose(file);
} else {
printf("bad command from client, closing connection\n");
close(client_sockfd);
continue;
}
printf("server answer: \"%s\"\n", buf);
write(client_sockfd, &buf, strlen(buf));
close(client_sockfd);
}
}
radist04ka@
Код: Выделить всё
else printf("listen is ok\n");
daemon(0,0);
while(1)
{
но тут вылетает глюк:
Код: Выделить всё
Escape character is '^]'.
TEST
OK
Connection closed by foreign host.
а вот:
Код: Выделить всё
Connected to 192.168.50.241.
Escape character is '^]'.
GETTEST
ERR
Connection closed by foreign host.
как мне обьснили что daemon(0,0); надо писать всегда перед циклом... а почему тогда ругается...
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
это происходит из-за того что daemon запускается из /
а как тогда указать то что файл лежит рядом с бинарником, а не статично...
./ не помогло
как указать НЕ статический путь
или как вывести путь к файлу в конфиге? и как его вообще писать то....
а как тогда указать то что файл лежит рядом с бинарником, а не статично...
./ не помогло
как указать НЕ статический путь
или как вывести путь к файлу в конфиге? и как его вообще писать то....
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
принимай в качестве параметра. осиль getopt.h. осиль fork()
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
Код: Выделить всё
daemon(0, 1);
while(1)
{
if ((f = open(".", O_RDONLY, 0)) == -1)
err(1, "open()");
if (fchdir(f) == -1)
err(1, "fchdir()");
и хоть и подключен #include <errno.h>
ругается:
Код: Выделить всё
radist04ka@radist04ka@ gcc -o TempR tempd.c
tempd.c: In function 'main':
tempd.c:43: error: called object 'err' is not a function
tempd.c:45: error: called object 'err' is not a function
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
не мучайся
воткни нжинХ
он выдержит
или лайтХТТПд
только xml статикой генерируй время от времени, а не динамокой на каждый запрос
воткни нжинХ
он выдержит
или лайтХТТПд
только xml статикой генерируй время от времени, а не динамокой на каждый запрос
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
FreeBSP писал(а):http://www.freebsd.org/cgi/man.cgi?quer ... ormat=html
издеваетесь, да?
я первым делом в яндогугль и вписал err.h:
Код: Выделить всё
radist04ka@ cat tempd.c | grep err
#include <errno.h>
#include <err.h>
int err=-1;
err=(bind(server_sockfd, (struct sockaddr *) &server_address, server_len));
if(err!=0) printf("bind error!\n");
err=-1;
err=(listen(server_sockfd, 5));
if(err!=0) printf("listen error!\n");
err(1, "open()");
err(1, "fchdir()");
printf("read: %s. closing connection\n", strerror(errno));
ругаетяс только на это:
Код: Выделить всё
if ((f = open(".", O_RDONLY, 0)) == -1)
err(1, "open()");
if (fchdir(f) == -1)
err(1, "fchdir()");
остальное то в порядке...tempd.c:43: error: called object 'err' is not a function
tempd.c:45: error: called object 'err' is not a function
он у меня и был статичный..кадую минуту кроном с помощью tcl скрипта генерилсятолько xml статикой генерируй время от времени, а не динамокой на каждый запрос
нифига, раз начал, теперь до конца пойду...не мучайся
upd. щаз по статье попробую вторую функцию err вписать...
upd.2 не получилось
всего вот:
Код: Выделить всё
radist04ka@ cat tempd.c | grep include
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <err.h>
#include <fcntl.h>
#include <getopt.h>
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
я редко стебусь и еще реже издеваюсь.QweЯty писал(а):издеваетесь, да?
чаще - пытаюсь заставить думать
ибо если не заставить - то человек потерян для сообщества
так что попытаюсь заставить думать и тебя
прочитай, вдумайся, оцени, исправьQweЯty писал(а):Код: Выделить всё
radist04ka@ cat tempd.c | grep err int err=-1; err(1, "open()");
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
предсказываю:QweЯty писал(а):нифига, раз начал, теперь до конца пойду...не мучайся
ты напишешь демона
он будет работать
он завалится под парой сотен коннектов и хорошо если не завалит за собой систему
ты вернешься к идее с вебсервером, поднимешь нжинх/лайти и будешь счастлив
хотя опыт работы на сишнике это и здорово, но лучше начинать нормально или не начинать вообще
я к тому, что начинать изучать программирование на горящем проекте это не комильфо. и использовать daemon() не зная что делает fork() это не правильно
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
неееее, теперь нет:)и завалится под парой сотен коннектов и хорошо если не завалит за собой систему
учел это уже...
в программке, теперь чтобы сразу все соединились в один и тот же момент это должно очень хорошо повезти.. теория вероятности рулит:)) и чего я раньше не знал о таком как random();
и потом, а что мешает, если упадет, работать по нескольким портам/сокетам... тоже нагрузка упадет
и подконец, если будет совсем лень, тупо в исходниках(или конфигах) изменить порт и запустить еще одну копию из другого каталога....я так с ботами баловался... 15 штук запустил пока они не задолбали своими "разговорчивыми" модулями..
- QweЯty
- лейтенант
- Сообщения: 796
- Зарегистрирован: 2010-10-12 0:15:15
- Откуда: Таганрог, Калининград
- Контактная информация:
Re: прослушивать порт и отвечать если пришел заданный текст
то есть надо открыть еще одну переменную?err(1, "open()");
вчера читал, толи про open толи про fchdir что они при нормальной работе возвращают число -1 или наоборот.
хотя другие программы наоборот работают..
щаз историю ковырял не нашел:(
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: прослушивать порт и отвечать если пришел заданный текст
переменную по другому обзови
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!