Форум программистов, компьютерный форум, киберфорум
Ubuntu, Mint Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
1

Как запустить HTTP сервер на определённом порту, чтобы он слушал запросы?

01.03.2018, 00:52. Показов 1304. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Купил услугу: Виртуальный сервер на Linux. Выбрал ОС: Ubuntu 16.04 Xenial.
Поставил Mono. В итоге пробую запусить программу с тем IP, которым я вообще подключаюсь к Linux, и валится программа с ошибкой. Я догадываюсь, что айпишник такой не получится использовать. В общем, как заставить сервер работать?

root@vm-caspersc-96045:/home/ubuntu/server/nancyfx-test# mono Server.exe
Startup.

The requested address is not valid in this context
at System.Net.Sockets.Socket.Bind (System.Net.EndPoint localEP) [0x00043] in <be269f7eb6984ea88d7ac610faafc476>:0
at System.Net.EndPointListener..ctor (System.Net.HttpListener listener, System.Net.IPAddress addr, System.Int32 port, System.Boolean secure) [0x00047] in <be269f7eb6984ea88d7ac610faafc476>:0
at System.Net.EndPointManager.GetEPListener (System.String host, System.Int32 port, System.Net.HttpListener listener, System.Boolean secure) [0x0009d] in <be269f7eb6984ea88d7ac610faafc476>:0
at System.Net.EndPointManager.AddPrefixInternal (System.String p, System.Net.HttpListener listener) [0x0005e] in <be269f7eb6984ea88d7ac610faafc476>:0
at System.Net.EndPointManager.AddListener (System.Net.HttpListener listener) [0x0009c] in <be269f7eb6984ea88d7ac610faafc476>:0
at System.Net.HttpListener.Start () [0x0000f] in <be269f7eb6984ea88d7ac610faafc476>:0
at Nancy.Hosting.Self.NancyHost.TryStartListener () [0x00045] in <e8787200efe84e41bf54905d0d49151d>:0
at Nancy.Hosting.Self.NancyHost.StartListener () [0x00000] in <e8787200efe84e41bf54905d0d49151d>:0
at Nancy.Hosting.Self.NancyHost.Start () [0x00000] in <e8787200efe84e41bf54905d0d49151d>:0
at Server.Program.Run (System.String[] args) [0x0004c] in <5e5f3c49120d4d1fa49a8f241a810e8c>:0
root@vm-caspersc-96045:/home/ubuntu/server/nancyfx-test# netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
Код приложения (просто, для полноты картины):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Configuration;
using Nancy.Hosting.Self;
using NLog;
 
namespace Server
{
    class Program
    {
        //private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
 
        #region Entry point
 
        private static Program _program;
 
        static void Main(string[] args)
        {
            _program = new Program();
            _program.Run(args);
        }
 
        #endregion
 
        private void Run(string[] args)
        {
            Console.WriteLine("Startup.");
            //_logger.Info("Startup.");
 
            string ip = ConfigurationManager.AppSettings["ipAddress"];
            string port = ConfigurationManager.AppSettings["port"];
            Uri uri = new Uri($"http://{ip}:{port}/test/");
            using (var host = new NancyHost(uri))
            {
                try
                {
                    host.Start();
 
                    Console.WriteLine("Application started.");
                    Console.WriteLine("Address: " + uri);
 
                    //_logger.Info("Application started.");
                    //_logger.Info("Address: " + uri);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("{1}{0}{2}", Environment.NewLine, ex.Message, ex.StackTrace);
                    //_logger.Error("{1}{0}{2}", Environment.NewLine, ex.Message, ex.StackTrace);
                }
 
                Console.ReadKey();
            }
        }
    }
}
Добавлено через 4 минуты
Вот ещё инфа. Кажись, получилось открыть порт 8085 командой:
iptables -I INPUT -p tcp -m tcp --dport 8085 -j ACCEPT

root@vm-caspersc-96045:/home/ubuntu/server/nancyfx-test# iptables -L -n -v
Chain INPUT (policy ACCEPT 14 packets, 1388 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8085
26114 32M f2b-sshd tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 9 packets, 440 bytes)
pkts bytes target prot opt in out source destination

Chain f2b-sshd (1 references)
pkts bytes target prot opt in out source destination
26065 32M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.03.2018, 00:52
Ответы с готовыми решениями:

TClientSocket. Узнать, слушает ли сервер на определенном порту
Используя TClientSocket и TServerSocket возникла необходимость узнать слушает ли сервер на...

Как разорвать соединение на определённом порту
Хех, продолжаю извращаться. Попробую описать задачу: Есть 2 программы: игровой сервер, и...

Как сделать, чтобы finger-сервер отвечал на запросы клиента?
Как поднять под Ubuntu 12.10 сервер finger, чтобы он отвечал на запросы клиента?

www-http сниффер. Как отследить HTTP запросы?
Посмотрел я вот эту статью: ...

8
Эксперт по компьютерным сетямЭксперт NIX
13018 / 7409 / 801
Регистрация: 09.09.2009
Сообщений: 28,995
01.03.2018, 09:11 2
Цитата Сообщение от Casper-SC Посмотреть сообщение
Chain INPUT (policy ACCEPT
зачем открывать то, что итак открыто?
1
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
01.03.2018, 09:14  [ТС] 3
Dmitry, так оно открыто потому что я открыл. Нет?

И суть не в этом. Вопрос в том, как определить, на каком айпишнике сервер запускать? Так как при запуске пишет:
The requested address is not valid in this context
0
Эксперт по компьютерным сетямЭксперт NIX
13018 / 7409 / 801
Регистрация: 09.09.2009
Сообщений: 28,995
01.03.2018, 09:21 4
Цитата Сообщение от Casper-SC Посмотреть сообщение
Нет?
нет. процитированное мной показывает политику файервола по умолчанию. а цепь инпут - это та, по которой пакеты извне попадают непосредственно в сам комп.
1
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
01.03.2018, 10:31  [ТС] 5
Dmitry, ок, понял. Что можно сделать? Может есть что почитать можно по этой теме?
0
Эксперт по компьютерным сетямЭксперт NIX
13018 / 7409 / 801
Регистрация: 09.09.2009
Сообщений: 28,995
01.03.2018, 10:49 6
Цитата Сообщение от Casper-SC Посмотреть сообщение
что почитать можно по этой теме?
по файерволу? например это:
https://www.opennet.ru/docs/RUS/iptables/
по вашей программе? тут я не в курсе. попробуйте ее запускать на локалхосте
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
01.03.2018, 11:42  [ТС] 7
Цитата Сообщение от Dmitry Посмотреть сообщение
по вашей программе? тут я не в курсе. попробуйте ее запускать на локалхосте
А толку, я же не смогу из вне подключиться к такому серверу. Моя проблема это невозможность поднять сервер на каком-то айпи. Вообще непонятно на каком нужно в данном случае, скорее всего, на том, через который я удалённо подключаюсь через WinSCP и PuTTY к самому линуксу.
0
Эксперт по компьютерным сетямЭксперт NIX
13018 / 7409 / 801
Регистрация: 09.09.2009
Сообщений: 28,995
01.03.2018, 11:57 8
Цитата Сообщение от Casper-SC Посмотреть сообщение
Вообще непонятно на каком
ну попробуйте так, как это делают уже запущенные на сервере службы:
Цитата Сообщение от Casper-SC Посмотреть сообщение
# netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
05.03.2018, 04:05  [ТС] 9
Dmitry, пробовал запускать сервер с 0.0.0.0, снаружи я не могу получить доступ к службе.

В общем, может кто-то помочь настроить? Через TeamViewer, например. А сюда потом напишу, как решили проблему, чтобы была польза от этой темы.
0
05.03.2018, 04:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2018, 04:05
Помогаю со студенческими работами здесь

Как сделать с помощью фильтров в "Политиках безопасности IP чтобы http трафик открывался через прокси сервер?
Здравствуйте. Как сделать так, чтобы http трафик открывался через прокси сервер? Это нужно сделать...

Как запустить 2 программы на одном порту?
Вобщем такая ситуация, написал чат (наполовину), т.к. он прослушивает определенный порт, как...

Что нужно дописать на сервере чтобы он не только слушал но и передавал
Что нужно дописать на сервере чтобы он нетолько слушал но и передовал


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru