0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 27
1

Необработанное исключение типа "System.Net.Sockets.SocketException" в System.dll

21.12.2014, 15:04. Показов 9759. Ответов 3
Метки нет (Все метки)

Доброго времени суток! Есть следующая статья: Разработка прокси-сервера на C#
В самом конце есть исходник с несколькими разными прокси серверами, начиная от самого простого, заканчивая прокси сервером с блэклистом и прочими заморочками. Все варианты мне пишут следующую ошибку, прикрепил скриншот. Я так понял, что ему не нравится порт прокси, хотя с портами вроде все должно быть в порядке, адрес прокси 127.0.0.1 , порт 8888, указываю это в настройках прокси, запускаю, ввожу в адресную строку адрес какого-нибудь сайта, программа работает до определенного момента, передаются данные прокси, он все находит, а обратно клиенту они не идут. Запускал я самый простой вариант: ProxyEasy. В чем может быть проблема? Помогите, пожалуйста. Заранее спасибо!
Миниатюры
Необработанное исключение типа "System.Net.Sockets.SocketException" в System.dll  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2014, 15:04
Ответы с готовыми решениями:

Необработанное исключение типа "System.ObjectDisposedException" в mscorlib.dll
Добрый день!Подскажите пожалуйста.Возникает ошибка Необработанное исключение типа...

Необработанное исключение типа "System.IO.IOException" произошло в mscorlib.dll
Ребят подскажите проблему при сохранение через SaveFileDialog() выдает ошибку: Необработанное...

Потоки Thread: Необработанное исключение типа "System.NullReferenceException"
Такова проблема thrListener = new Thread(KeepListening); thrListener.Start(); ... public...

Необработанное исключение типа "System.Reflection.TargetInvocationException"
Добрых времени суток. Есть асинхронный сервер, к которому подулючается клиент, передает на серв...

3
0 / 0 / 0
Регистрация: 26.02.2014
Сообщений: 27
21.12.2014, 15:22  [ТС] 2
Собственно код программы:
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
88
89
90
91
92
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 PoxyEasy
{
  class Program
  {
    static void Main(string[] args)
    {
      // слушаем локальный апишник (127.0.0.1) и порт 8888
      TcpListener myTCP = new TcpListener(IPAddress.Parse("127.0.0.1"), 8888);
      // поехали!
      myTCP.Start();
 
      while (true)
      {
        // смотрим, есть запрос или нет
        if (myTCP.Pending())
        {
          // запрос есть
          using (Socket myClient = myTCP.AcceptSocket())
          {
            // соединяемся
            if (myClient.Connected)
            {
              // получаем тело запроса
              byte[] httpRequest = ReadToEnd(myClient);
              // ищем хост и порт
              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;
              // если порта нет, то используем 80 по умолчанию
              if (!int.TryParse(m.Groups["port"].Value, out port)) { port = 80; }
 
              // получаем апишник по хосту
              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);
                  // передаем ответ обратно клиенту
                  if (httpResponse != null && httpResponse.Length > 0)
                  {
                    myClient.Send(httpResponse, httpResponse.Length, SocketFlags.None);
                  }
                }
              }
 
            }
          }
        }
 
      }
 
      myTCP.Stop();
    }
 
    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();
      }
    }
 
  }
}
0
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 10
10.04.2015, 00:03 3
Уже наверное не актуально, но тоже ошибка такая возникла.
Вот в этой строчке
C#
1
2
// создаем точку доступа
              IPEndPoint myIPEndPoint = new IPEndPoint(myIPHostEntry.AddressList[0], port);
myIPHostEntry.AddressList[0] выдаёт ipv6 адрес
Чтобы работало с ipv6, говорят
необходимо выполнить:
ipv6 install
Но наверняка нам нужно ipv4 брать. Тут либо прописывать через IPAddress.Parse(string),
либо выуживать как-то из AddressList чисто ipv4 (через регулярные выражения, например) П.С.: но наверняка есть способ проще.
П.П.С.: примеры с msdn https://msdn.microsoft.com/ru-... 10%29.aspx
0
6 / 5 / 2
Регистрация: 12.04.2015
Сообщений: 35
13.04.2015, 12:24 4
Там какой-то глюк был с разрешением через DNS имени "127.0.0.1". Т.е. теоретически должно работать, а на практике разрешаются все адреса кроме петлевого. Обходится легко: либо указать реальный адрес требуемого интерфейса, либо указать имя хоста.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2015, 12:24
Помогаю со студенческими работами здесь

Отправка почты: "необработанное исключение отправки почты в system.Dll"
подскажите - вот пример на C#, но он мне пишет &quot;необработанное исключение отправки почты в...

Выдано исключение типа "System.OutOfMemoryException"
Доброго времени суток. Есть приложение, периодически (довольно редко) ловлю Unhandled Exception...

Исключение типа "System.StackOverfliwException"
Добрый день. В форма есть ТекстБокс и Кнопка. Ввожу текст в бокс, жму кнопку, функция обрабатывает...

Неявное преобразование типа "System.Drawing.Icon" в "System.Drawing.Image" невозможно
ПОдскажите как можно вставить рисунок в панель если использую ico. Неявное преобразование типа...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru