Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
1 / 1 / 0
Регистрация: 19.05.2015
Сообщений: 59
1

Принять GET запрос на TCP сервере

08.08.2017, 21:14. Показов 3002. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Есть следующая ситуация. Есть некий TCP сервер, который запускается на моем пк (на моем адресе соответсвенно). И есть простая страничка с js кодом на мухосранском хостинге. В чем суть. Хочу отправить GET запрос с той странички на свой сервер, и собственно вывести этот самый запрос в консоль. Что есть на данный момент:

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
55
56
57
58
class Server
    {
        TcpListener Listener; 
 
        public Server(string adress, int Port)
        {
            Listener = new TcpListener(IPAddress.Parse(adress), Port);
            Listener.Start();
            Console.WriteLine("Server is running. IPAdress: {0}\nPort: {1}", adress, Port);
            while (true)
            {
                new Client(Listener.AcceptTcpClient());
            }
        }
 
        ~Server()
        {
            if (Listener != null)
            {
                Listener.Stop();
            }
        }
 
        static void Main(string[] args)
        {
            new Server("178.213.тут_мой.адресс", 8124);
        }
    }
class Client
    {
        public Client(TcpClient Client)
        {
            string Request = "";
            byte[] Buffer = new byte[1024];
            int Count;
            while ((Count = Client.GetStream().Read(Buffer, 0, Buffer.Length)) > 0)
            {
                Request += Encoding.ASCII.GetString(Buffer, 0, Count);
            }
            Match ReqMatch = Regex.Match(Request, @"^\w+\s+([^\s\?]+)[^\s]*\s+HTTP/.*|");
            if (ReqMatch == Match.Empty)
            {
                return;
            }
            string RequestUri = ReqMatch.Groups[1].Value;
            RequestUri = Uri.UnescapeDataString(RequestUri);
            if (RequestUri.IndexOf("..") >= 0)
            {
                return;
            }
            if (RequestUri.EndsWith("/"))
            {
                RequestUri += "index.html";
            }
            Console.WriteLine("Message: {0}", Request);
            Client.Close();
        }
    }
Это сервер.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
    <input type='button' onclick="onclick1()" value="hi"/>
<script>
    function onclick1() {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', 'http://178.213.тут_мой.адрес:8124', true);
        xhr.send('Hello');
    }
</script>
</body>
</html>
А это клиент

И это не робит)
На строчку
C#
1
 Listener.Start();
получаю ошибку System.Net.Sockets.SocketException: 'The requested address is not valid in its context'

Прошу мне подсказать и указать, где я не прав. Заранее большое спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2017, 21:14
Ответы с готовыми решениями:

Как принять JSON на tcp сервере?
Я с клиента андроид на tcp сервер qt хочу отправить JSON как на сервере методами Qt его можно...

Принять входящую команду по TCP
Собственно весь вопрос. Надо написать класс который принимает команду по TCP протоколу. ...

TCP клиент: Не получается принять сообщение от сервера
Добрый день, хочу попробовать реализовать на Indy обмен с сервером. Я ему посылаю сообщение, он...

Можно ли по TCP отправить несколько JSON и принять соответственно?
можно ли по TCP отправить несколько JSONов и принять на сервере соответственно??

1
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
09.08.2017, 18:59 2
Цитата Сообщение от fn12gl34 Посмотреть сообщение
подсказать и указать, где я не прав.
Этот конструктор позволяет указать локальный IP-адрес и номер порта, на котором будет прослушивать входящие подключения попыток. Перед вызовом конструктора, необходимо сначала создать IPAddress используя необходимый локальный адрес. Передайте это IPAddress в конструктор как localaddr параметр. Если неважно, какой локальный адрес будет присвоен, укажите IPAddress.Any для localaddr параметр и основной поставщик услуг присвоит наиболее подходящий сетевой адрес.
https://msdn.microsoft.com/ru-... .110).aspx
0
09.08.2017, 18:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.08.2017, 18:59
Помогаю со студенческими работами здесь

Нужно принять пакет на сервере
С помощью VBS отправляется пакет на заданный URL: Set oHTTP =...

Как правильно принять изображение JPG и записать в файл TCP
Я с TCP клиента андроид передаю на сервер файл JPEG.Данные вроде отправляются нормально, но на...

Не получается принять TCP/IP пакет более 2048 байт. Visual C++.
Использую MFC. Имеется UDP-сокет (CAsyncSocket). При приходе пакета длиной более 2048 байт функция...

Как правильно принять данные по TCP протоколу функцией recv?
Всем добрый вечер! Пытаюсь реализовать получение данных с устройства через TCP. linux OS. Данные...


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

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