Winsock через прокси

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Winsock через прокси

Сообщение Kepmann » 26.08.2005 (Пт) 15:40

Перерыл весь форум и, видимо, большую часть инета, и не смог найти то, что надо.

Может быть, поможете?

Трабл в том, что приложение (допустим чат, в котором юзается винсок) должно работать через инет и устанавливать коннект с винсоком сервера.

Все бы ничего, но нужно пробиться через прокси-сервер. То есть, необходимо сделать так, как в аське, чтобы прога пробивалась по http-проксе и соединялась с сервером. Вот.

Для тестирования выдали проксю winrout.

Потенциально знаю, как сделать через сокс, но надо через примитивные прокси-сервера http.


Поскажите плиз...

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 26.08.2005 (Пт) 15:42

w3 org
Cмотри описание формата прокси
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 26.08.2005 (Пт) 15:46

Ну всё тоже самое только коннектишься на адрес и порт прокси и передаёшь:

Для GET:
GET http://www.mysite.ru/index.htm:80 HTTP/1.1
Server: www.mysite.ru
и дальше остальные заголовки

Для POST:
POST http://www.mysite.ru/index.htm:80 HTTP/1.1
Server: www.mysite.ru
и дальше остальные заголовки и в конце POSTDATA

Как для CONNECT не знаю - не работал с ним никогда.
Программисты не глючат - глючат компиляторы...

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 26.08.2005 (Пт) 15:50

Дык нет сайта. Есть только удаленная машина, слушающая порт...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.08.2005 (Пт) 15:58

Запрос:

GET http://www.mysite.ru/index.htm HTTP/1.1
Host: www.mysite.ru


Винсоком коннектиться к той самой удалённой машине, слать этот запрос. Удалённая машина разберётся.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 26.08.2005 (Пт) 16:31

Сработало... спасибо.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 29.08.2005 (Пн) 9:50

И еще вопросик.

Прокси рвет соединение после отправки пакета...

Как ему сказать, чтоб держал соединение?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.08.2005 (Пн) 12:11

Connection: keep-alive
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 29.08.2005 (Пн) 12:20

sckConnectServer.Connect txtIP.Text, 3128
strIP = txtIP.Text
DoEvents
sckConnectServer.SendData "POST http://10.0.66.92:1002/ HTTP/1.1" + vbCrLf
DoEvents
sckConnectServer.SendData "HOST: 10.0.66.92:1002" + vbCrLf
DoEvents
sckConnectServer.SendData "Content-length: " + CStr(DATA_TO_SEND) + vbCrLf + vbCrLf
DoEvents
sckConnectServer.SendData DATA_TO_SEND + vbCrLf
DoEvents


Необходимо, насколько понимаю, вставить вот это:


sckConnectServer.SendData "Proxy Connection: Keep-Alive" & vbCrLf & vbCrLf
DoEvents



Вот только куда?


Пробую - не работает

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.08.2005 (Пн) 12:27

Мда... А кто тебе сказал, что этот код работает правильно?
Lasciate ogni speranza, voi ch'entrate.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 29.08.2005 (Пн) 12:35

Это не мой код...

Подскажите плз, как правильно.

txtIP - локальный адрес прокси-сервера
10.0.66.92:1002 адрес компа к которому надо законнектиться (IP взят от балды)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.08.2005 (Пн) 12:37

Смотри FAQ, там все написано.
Lasciate ogni speranza, voi ch'entrate.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 29.08.2005 (Пн) 12:44

В какой ФАК? Где правила пользования форумом написаны?

Блин.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.08.2005 (Пн) 13:02

Lasciate ogni speranza, voi ch'entrate.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 29.08.2005 (Пн) 13:11

Два раза прочитал все темы - подходящей нет. Мне нужно через проксю коннект установить, чтоб он проксей не рвался...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.08.2005 (Пн) 13:22

Lasciate ogni speranza, voi ch'entrate.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 29.08.2005 (Пн) 14:02

Жестоко торможу... Если ктонить может показать, как сделать то, что мне нужно, напишите пожалуйста. А то я зае...

Несколько часов в инете ковыряюсь - не могу найти конкретно то, что нужно.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.08.2005 (Пн) 14:13

Первое. Не надо разделять пакеты. Сформируй в одну строку (разделитель - vbCrLf, конец заголовка и начало данных - двойной vbCrLf).
Второе. Connection: keep-alive в любом месте заголовка. Например, после Host.
Третье. Content-length: <CStr(DATA_TO_SEND)> - неправильно. В Content-Length указывается длина пакета, а не сам пакет.
Lasciate ogni speranza, voi ch'entrate.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 31.08.2005 (Ср) 11:27

sckConnectServer.Close
sckConnectServer.Connect strIP, strPort
DoEvents
DATA_TO_SEND = "POST http://9.9.9.9:999/HTTP/1.1" & vbCrLf
DATA_TO_SEND = DATA_TO_SEND & "HOST: 9.9.9.9:999" & vbCrLf
DATA_TO_SEND = DATA_TO_SEND & "Connection: Keep-Alive" & vbCrLf
DATA_TO_SEND = DATA_TO_SEND & "Content-length: " & Str(Len(DATA_TO_SEND)) + vbCrLf + vbCrLf
DATA_TO_SEND = DATA_TO_SEND & "VHD" & txtName.Text & ":" & txtPassword.Text


9.9.9.9 - инетовский IP
999 - порт


Так?
Все равно связь рвется... 8(


Скажите, где у меня ошибки...

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 31.08.2005 (Ср) 11:57

Дык мне нужно чтоб никогда не рвался коннект.

я так понимаю, keep-alive именно для этого...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.08.2005 (Ср) 12:21

FleX_2004 писал(а):Это работает пока ты весь пакет не пошлешь- те прокси будет ждать окончание пакета, А ПОТОМ ВСЕ РАВНО ОТРУБИТСЯ - ТК У ТЕБЯ ,как и у многих серверов, СТОИТ ДИКСОННЕКТ после PACKET_COMPLETE

FleX_2004, не путай людей. В HTTP нету пакетов. Один HTTP-запрос может разбиться на любое количество IP-пакетов. И ни один сервер не будет рвать связь после конца первого (второго, n-ого) пакета: они анализируют текст запроса, а не его разбивку по пакетам.

Именно из-за таких недопониманий потом и рождаются вопли "а вот у меня Винсок файл не целиком принимает, может мне его побить на полукилобайтные кусочки?"
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.08.2005 (Ср) 12:22

tyomitch писал(а):Именно из-за таких недопониманий потом и рождаются вопли "а вот у меня Винсок файл не целиком принимает, может мне его побить на полукилобайтные кусочки?"

Но если нужно передавать файл с ограниченной скоростью, то именно так и приходится делать :)
Lasciate ogni speranza, voi ch'entrate.

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 31.08.2005 (Ср) 13:02

Господа, есть конкретная проблема.

Допустим, речь идет о чате...
Клиент коннектится к серверу, отправляет имя и пароль, А от сервера ответ не успевает получить, ибо прокся рвет коннект после отправки данных.

Так как речь идет о чате, должно быть постоянное соединение с сервером...

хилп...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.08.2005 (Ср) 13:12

А причём. в этом случае, вообще HTTP-прокся?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kepmann
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 18.06.2005 (Сб) 14:19

Сообщение Kepmann » 31.08.2005 (Ср) 13:40

HTTP прокси потому, что прога должна работать чер5ез любые прокси, как аська, например, которая нормально работает через http. В принципе, через httpпроксю работает, вот тока обрыв связи идет.

Неужели никогда никто не пробовал сделать чат, работающий через http-прокси???

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.08.2005 (Ср) 14:00

Kepmann, для начала почитай о прокси, как они работают, а потом будет задавать вопросы.
А сейчас ты не задаешь вопросы, а говоришь глупости.
Lasciate ogni speranza, voi ch'entrate.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 31

    TopList