на просторах инета нашел:
просто сервер который принимает символ инкрементирует его и возвращает (для пробы пера был сделан и рповерен телнетом) работает:
Код: Выделить всё
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); чтобы программа запускалась в фоне...