Простенький сервер (пару вопросов)

Модератор: Модераторы разделов

Аватара пользователя
Gang
Сообщения: 106

Простенький сервер

Сообщение Gang »

Здравствуйте!
Необходимо написать програмнку, которая принимает и выполняет команда. Написали, на локальной машине все работает, но через сеть не хочет.
2 вопроса:
1) Возможно , закрыты порты, как это проверить и открыть соответственно.
2) Может ошибка в коде??

Код: Выделить всё

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <sys/un.h>
#include <stdlib.h>

int main(){

    int sock, listener;
    struct sockaddr_in addr;
    char buf[1024];
    int bytes_read;

    listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0) {
        perror("socket");
        exit(1);
    }

    addr.sin_family = AF_INET;
    addr.sin_port = htons(3425);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
        perror("bind");
        exit(2);
    }

    listen(listener, 1);

    while(1) {
    sock = accept(listener, NULL, NULL);
    if (sock < 0){
        perror("accept");
        exit(3);
    }

    while(1){
            bytes_read = recv(sock, buf, 1024, 0);
            if (bytes_read <= 0) break;
            send(sock, buf, bytes_read, 0);
        printf("\t buf: %s\n", buf);
    }

    close(sock);

    }

    return 0;
}


Заранее благодарен.
Спасибо сказали:
TwisT
Сообщения: 265
ОС: Debian

Re: Простенький сервер

Сообщение TwisT »

Вопрос не в тему: Случайно не из книги Стивенсона UNIX разработка сетевых приложений?
Linux user #432536.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Простенький сервер

Сообщение elide »

да нет, все правильно.
это у тебя с фаерволом что-то не так...
слава роботам!
Спасибо сказали:
alfamayonez
Сообщения: 28
ОС: openSUSE 10.2

Re: Простенький сервер

Сообщение alfamayonez »

1) Возможно , закрыты порты, как это проверить и открыть соответственно.

Проверить nmap'oм.
Открыть iptables'ом(iptables -A INPUT -p протокол --dport порт -j ACCEPT) :)
Спасибо сказали:
Аватара пользователя
Gang
Сообщения: 106

Re: Простенький сервер

Сообщение Gang »

TwisT писал(а):
21.04.2007 18:07
Вопрос не в тему: Случайно не из книги Стивенсона UNIX разработка сетевых приложений?

нет

alfamayonez писал(а):
22.04.2007 01:17
Проверить nmap'oм.
Открыть iptables'ом(iptables -A INPUT -p протокол --dport порт -j ACCEPT) :)


Спасибо большое! завтра потестю )
а по поводу nmapa можно поподробней?
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Простенький сервер

Сообщение Voice »

Gang писал(а):
22.04.2007 21:29
а по поводу nmapa можно поподробней?

nmap это сканер портов. С его помощью можно узнать открыт порт или нет.
Запустите сервер и просканьте порты. И будет видно открыл сервер порт или нет.
В инете информации по nmap'у хватает.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
edranovdenis
Сообщения: 135
ОС: main mdv2006

Re: Простенький сервер

Сообщение edranovdenis »

хм. у меня есть что-то очень похожее: прога висит на 80 порту и при попытке обращения браузером определяет ури и соответствующий ответ отсылает.
есть проблема, иногда если прогу остановить и запустить заново, то она не отвечает, необходимо перезапускать через 30 сек. вероятно порт не освобождается сразу после останова проги, а лишь через какое-то время. можно ли как-то сократить это время?
Живая мысль подобна реке бегущей с гор - будучи полноводной, не засохнет, но непременно впадет в океан.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Простенький сервер

Сообщение elide »

просто завершай программу корректно, а в программе закрывай все сокеты.
слава роботам!
Спасибо сказали: