Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24

Работа с СОКЕТАМИ!

17.09.2011, 16:46. Показов 2924. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалусто примерами ответов сервера клиенту по RFC протоколу, хотя бы пару команд обработать (Simple SOCKET-ы я вполне освоил, а вот чтобы общаться с клиентами представленными браузерами или пограммами ориентированными на работу с настоящими запросами мне пока тяжко).

Добавлено через 20 минут
Вот что сам накопал
Диапазон
кодов Значение ответа
100-199 Информационный
200-299 Запрос клиента успешен
300-399 Запрос клиента переадресован, необходимы дальнейшие действия
400-499 Запрос клиента является неполным
500-599 Ошибки сервера

Допустим мой клиент даёт мне запрос
CONNECT 213.248.114.203:21 HTTP/1.0
Как мне ответить (я то понимаю что клиент спрашивает Я приконектился или нет?) Что в send(my_sock,"тут",...) передавать???200 ОК, ребят ну помогите мне вырасти в плане сокетов, отвлекитесь от чёрных окон!!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2011, 16:46
Ответы с готовыми решениями:

Работа с сокетами
как вырубить локальный клиент?

Работа с Сокетами
Доброго времени суток! Не мог бы кто-нибудь привести пример работы сокетов под Windows. Уже всю голову сломал Меня интересует вот...

Работа с сокетами
Где можно прочитать про работу с TCP сокетами в С++? Нужно "посадить" на прослушку программу на определенный порт, и что бы можно было...

18
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 20:10
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Допустим мой клиент даёт мне запрос
CONNECT 213.248.114.203:21 HTTP/1.0
Как мне ответить (я то понимаю что клиент спрашивает Я приконектился или нет?) Что в send(my_sock,"тут",...) передавать???
Как-то все у вас сумбурно...
Вы можете ответить кучей кодов (405, 407, 501...). Если хочется отвечать 200 то:
выдергиваете из запроса адрес/порт, делаете туда connect(), отвечаете клиенту 200, все что приходит от клиента отдаете хосту, а все что приходит от хоста - клиенту.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
17.09.2011, 20:19  [ТС]
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
выдергиваете из запроса адрес/порт, делаете туда connect(), отвечаете клиенту 200
- если не пальцах так отвечать(две сотни в ответ передать хочу)

213.248.114.203:21 200 ????

g_u_e_s_t, не в службу распиши в деталях один ответ, я пока нуб в RFC
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 20:35
Что именно вам расписать то???
Если вы отвечаете любым 2xx кодом (текст прилагающийся к коду не важен) на CONNECT, это значит что ваш сервер создал запрошенный туннель.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
17.09.2011, 20:54  [ТС]
Вобщем ситуация такая есть мой TCP сокет-сервер и программа-клиент(что-то вроде анонимайзера),работу которой хочу производить через мой сервак.Строку которую выложил мне именно этот анонимайзер прислал,что мне с ней делать,конектиться в тот IP-шник,что клиенту моему серверу отвечать???
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 21:14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Строку которую выложил мне именно этот анонимайзер прислал,что мне с ней делать,конектиться в тот IP-шник,что клиенту моему серверу отвечать???
Повторяю 3й раз:
Получив такую строку ваш прокси сервер должен установить соединение с запрашиваемым хостом.
Если соединение установлено успешно, сервер должен ответить 200 и начать туннелирование данных. Если установить соединение не получилось отвечайте например 503/504
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
17.09.2011, 21:29  [ТС]
Если установить соединение не получилось отвечайте например 503/504,как ответить клиенту этим кодом загнать в строку 503 и send-ом переправить????
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 21:35
Юра, без разницы как именно вы отправите эту строку..
Вы можете формировать ее динамически, можете использовать константу, можете ее отправлять через send() или sendto() или через новомодний splice() если ваша система такое умеет, вариантов масса. Делайте как вам удобней.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
17.09.2011, 21:42  [ТС]
g_u_e_s_t, мне главное было понять что строкой код переправлять,я пробовал 200 кидать,но улиент показал что мой сервер не работает,значит подконекчусь на тот IP-ник и навернле от него анонимайзеру что то прийти должно,поэтому и не работал мой вариант эмуляции успешного соединения...
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 21:53
Прочитал 3 раза, ничего не понял.
4й раз: Ваш прокси получает подобный запрос, делает "подконекчусь на тот IP-ник" и если это самое подконекчусь получилось посылает клиенту "200 bla-bla-bla", оба соединения остаются открытыми, все что присылает клиет отправляете на "тот IP-ник", а все что присылает "тот IP-ник" отправляете клиенту.
Как только один из них закроет соединение, ваш прокси должен отдать противоположной стороне все оставшиеся данные (если они были) и закрыть оба сокета.
Если ваш сервер отвечает 200 и закрывает соединение с клиентом или просто долго молчит, то конечно оно "поэтому и не работал мой вариант эмуляции успешного соединения... "
Что тут может быть не понятно-то???
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
17.09.2011, 22:30  [ТС]
g_u_e_s_t, нет не правильно понял(Есть анонимайзер работающий как я полагаю по RFC (косвенно это уже подтвердилось так как запрос на мой сервер пришёл RFC-ый CONNECT 213.248.114.203:21 HTTP/1.0). Так вот я решил попробовать подконектить анонимайзер к моему серверу, в качестве теста попробовал на запрос CONNECT 213.248.114.203:21 HTTP/1.0 ответить 200).
Анонимайзер показывает удалось липодключиться к серверу или нет, так вот после посылки 200 ему в ответ он так и не показал конекта, по сим сделал заключение либо 200 не как строку передавать надо было, либо 21-й порт 213.248.114.203 мне что-то пришлёт, что будет ответом клиенту, ну не знаю пароль какой нибудь. В конечном итоге корректный ответ на запрос анонимайзера приведт к тому что в статусе подключение мой сервер станет - подключён. Подытожу простой ответ анонимайзеру строкой 200 ему побарабану...
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 22:52
Юра, вы извините, но я устал этого фееричного бредаповторять одно и тоже. Попробуйте почитать оригинал:
After the empty line in the request, the client will wait for a
response from the proxy. The proxy will evaluate the request, make
sure that it is valid, and that the user is authorized to request
such a connection. If everything is in order, the proxy will make a
connection to the destination server, and, if successful, send a "200
Connection established" response to the client. Again, the response
follows the HTTP/1.x protocol, so the response line starts with the
protocol version specifier, and the response line is followed by zero
or more response headers, followed by an empty line. The line
separator is CR LF pair.

Example of a response:

HTTP/1.0 200 Connection established
Proxy-agent: Netscape-Proxy/1.1

...data tunnelled from the server...

After the empty line, the proxy will start passing data from the
client connection to the remote server connection, and vice versa.
At any time, there may be data coming from either connection, and
that data must be forwarded to the other connection immediately.

Note that since the tunnelled protocol is opaque to the proxy server,
the proxy cannot make any assumptions about which connection the
first, or any subsequent, packets will arrive. In other words, the
proxy server must be prepared to accept packets from either of the
connections at any time. Otherwise, a deadlock may occur.

If at any point either one of the peers gets disconnected, any
outstanding data that came from that peer will be passed to the other
one, and after that also the other connection will be terminated by
the proxy. If there is outstanding data to that peer undelivered,
that data will be discarded.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
17.09.2011, 23:20  [ТС]
g_u_e_s_t,
Цитата Сообщение от g_u_e_s_t Посмотреть сообщение
HTTP/1.0 200 Connection established
- вот это мне и нужно было, в своём ответе я просто слал 200 без HTTP/1.0 спереди и Connection established сзади, сейчас попробую так конекшн эмулировать...
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
17.09.2011, 23:20
Подозреваю что причина в этом:
The line
separator is CR LF pair.
автор, как насчёт того, чтобы сменить язык с русского на си?
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
17.09.2011, 23:50
-=ЮрА=-, прежде чем пробовать что-то "сзади" прочитали бы все-таки что-нибудь про HTTP протокол...
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
18.09.2011, 11:03
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
RFC протоколу
Вот это странно звучит...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
18.09.2011, 11:14  [ТС]
Цитата Сообщение от fasked Посмотреть сообщение
Вот это странно звучит...
- в моём понимании сервер с клиентам общаюстя по определённым правилам, т.е с помощью запросов и ответов, по типу этих http://ru.wikipedia.org/wiki/WebSocket. Как я понял эти запросы/ответы описываются RFC протоколом?
Если это не так прошу небольшого ликбеза! я в сокетах ещё пару недель назад вообще ноль был, сейчас на сонове кодов вывшенных в сети накодил сервер с клиентом, аля файловый командер + свою асю делаю,НО мои программы со стандартными браузерами не пашут, т.к. запросы и ответы у меня свои простые...
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
18.09.2011, 12:14
Юра, всего возможных RFC сейчас уже более 6000, по этому в отрыве от контекста, ваша фраза без упоминания конкретного стандарта (к слову AFAIR на проксирование RFC нет, он так и остался draft'ом) звучит диковато. Может вы там 6214 пытаетесь реализовать)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
18.09.2011, 15:37  [ТС]
g_u_e_s_t, я не знаю в каком стандарте идут месаги от анонимайзера, его писал не я и рассматриваю эту программу как чёрный ящик с 1 вводом и выводом, мне вобщем попбарабану как там и что спаяно, важен результат - совместимость моего сервера с ней вот и всё...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2011, 15:37
Помогаю со студенческими работами здесь

Работа с сокетами
есть код void __fastcall TForm1::Button1Click(TObject *Sender) { ClientSocket1->Host = Edit1->Text; ClientSocket1->Active =...

работа с сокетами
работаю с сокетамим, нашёл в сети пример работы,благо таких много, суть примера между сервером и клиентом перебрасываются сообщениями....

Работа с Сокетами
Добрый день или вечер! Прошу помощи Зависает сервер при подключении клиента до момента подключения второго клиента. Что только не...

Работа с Сокетами Беркли
Вопрос можно создать сервер http, к которому обращаться по адресу в браузере и получать html страницу? Не могли бы показать на примере.

Работа с сокетами на Win32 API
подскажите синтаксис(желательно с примером) апишных функций для пересылки данных через сокеты. К примеру на smtp сервер


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru