Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/17: Рейтинг темы: голосов - 17, средняя оценка - 4.65
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855

Ошибка в работе прокси-сервера

16.02.2013, 21:05. Показов 3686. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!

Вот код программы:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
 
namespace Proxy
{
    class Program
    {
        //Функция будет принимать экземпляр сокета и возвращать полученный ответ в виде массива байт
        private static byte[] ReadToEnd(Socket mySocket)
        {
            byte[] b = new byte[mySocket.ReceiveBufferSize];
            int len = 0;
            using (MemoryStream m = new MemoryStream())
            {
                while (mySocket.Poll(1000000, SelectMode.SelectRead) && (len = mySocket.Receive(b, mySocket.ReceiveBufferSize, SocketFlags.None)) > 0)
                {
                    m.Write(b, 0, len);
                }
                return m.ToArray();
            }
        }
 
        static void Main(string[] args)
        {
            //Инициализируем класс TcpListener для прослушивания порта 8888
            TcpListener myTCP = new TcpListener(IPAddress.Parse("127.0.0.1"), 8080);
            //Старт прослушивания
            myTCP.Start();
 
            //Бесконеный цикл для постоянной работы программы
            while (true)
            {
                //Проверка на наличие запросов к прокси - серверу
                if (myTCP.Pending())
                {
                    //Если запрос есть, то создаем сокет для обработки данных
                    using (Socket myClient = myTCP.AcceptSocket())
                    {
                        //Открываем сокет для чтения запроса
                        if (myClient.Connected)
                        {
                            //Получение запроса клиента
                            byte[] httpRequest = ReadToEnd(myClient);
 
                            //Перенаправление запроса на 80 порт
                            Regex myReg = new Regex(@"Host: (((?<host>.+?):(?<port>\d+?))|(?<host>.+?))\s+", RegexOptions.Multiline | RegexOptions.IgnoreCase);
                            Match m = myReg.Match(System.Text.Encoding.ASCII.GetString(httpRequest));
                            string host = m.Groups["host"].Value;
                            int port = 0;
                            if (!int.TryParse(m.Groups["port"].Value, out port)) { port = 80; }
 
                            //Получение IP-адрес по хосту
                            IPHostEntry myIPHostEntry = Dns.GetHostEntry(host);
 
                            //Создаем сетевую точку доступа
                            IPEndPoint myIPEndPoint = new IPEndPoint(myIPHostEntry.AddressList[0], port);
 
                            //Открываем еще один сокет, который направит полученный от клиента запрос на удаленный сервер
                            using (Socket myRerouting = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                            {
                                myRerouting.Connect(myIPEndPoint);
                                if (myRerouting.Send(httpRequest, httpRequest.Length, SocketFlags.None) != httpRequest.Length)
                                {
                                    Console.WriteLine("При отправке данных удаленному серверу произошла ошибка...");
                                }
                                else
                                {
                                    //Получаем ответ
                                    byte[] httpResponse = ReadToEnd(myRerouting);
 
                                    //И напрявляем клиенту
                                    myClient.Send(httpResponse, httpResponse.Length, SocketFlags.None);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
Вот ошибка:
Миниатюры
Ошибка в работе прокси-сервера  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2013, 21:05
Ответы с готовыми решениями:

Написание прокси сервера на сокетах. Проброс сообщений основному серверу и возврат значений через прокси
Есть 3 приложения. 1. Клиент. 2. Прокси сервер. 3. Сервер. Что задумано: Запускается клиент и получает параметры конфигурации с...

При передаче post запроса через прокси сервер в ответ приходят ошибки с прокси сервера
При передаче post запроса через прокси сервер в ответ прилетают ошибки с прокси сервера: &lt;p&gt;&lt;b&gt;Invalid Request&lt;/b&gt;...

Создание собственного SOCKS4 прокси сервера
Всем привет. Необходимо создать прокси сервер (достаточно SOCKS4) на C#. Почитав википедию и просмотрев какие пакеты идут на SOCK4...

7
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
16.02.2013, 21:35
адрес ipV6?
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
16.02.2013, 21:55  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
адрес ipV6?
Незнаю
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
16.02.2013, 22:00
поставьте точку останова на строку после создания IpEndPoint. И посмотрите в Watchere. Первая мысль, что не тот тип.

Добавлено через 1 минуту
а , вижу. ipV4. надо подумать
0
 Аватар для SuLLeN
23 / 23 / 12
Регистрация: 27.12.2011
Сообщений: 855
16.02.2013, 22:03  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
поставьте точку останова на строку после создания IpEndPoint. И посмотрите в Watchere. Первая мысль, что не тот тип.
Можно ли по подробнее, как это сделать? Я еще совсем ученик...
0
 Аватар для IamRain
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,234
16.02.2013, 22:09
чтобы ваш прокси работал, нужно чтобы он имел публичный Ip, если нужно по всему Web-у. Иначе будет работать только в пределах одной локальной сети. - то есть http-запросы будут работать по одной локалке.

Добавлено через 1 минуту
Основы компьютерных сетей. Советую почитать. Частные ip-адреса, публичные и т.д.

Добавлено через 1 минуту
На всякий случай: там на скрине - проверьте свойство ErrorCode. Должно прояснить ситуацию.
0
Кодогенератор
 Аватар для hepper
200 / 200 / 51
Регистрация: 15.06.2011
Сообщений: 794
17.02.2013, 16:46
прокси сервер ТС рабочий, я ранее тоже использовал такой код. Ошибка из за проблем с интернетом либо конфликт порта сервера.
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
18.02.2013, 00:01
винда семерка ?
C#
1
 IPEndPoint myIPEndPoint = new IPEndPoint(myIPHostEntry.AddressList[4], port);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2013, 00:01
Помогаю со студенческими работами здесь

Организация проверки времени на получение ответа от прокси-сервера
Здравствуйте, товарищи-программисты. Программа занимается проверкой качества большого количества прокси. Нужно организовать проверку...

Нужен рабочий простенький пример консольного http прокси-сервера
Всем привет. Может кто знает OpenSource или рабочий простенький пример консольного http прокси сервера? Этот сервер должен принимать...

Ошибка регистрации в instagram через прокси
При регистрации инстаграм выдает &quot;IP-адрес, который вы используете, был отмечен как открытый прокси. Если вы считаете, что это -- ошибка,...

Анонимные http-прокси сервера в сети. Проверка их работоспособности средствами ASP.
?

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к сценарию(asp) получаю ошибку: &lt;пропуск&gt;...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru