Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

IRC & Socket


Noodlez ©   (2002-11-28 22:21:00) 

Проблема проста до безобразия. Путём долгих, изнурительных экспериментов выявлено :
При вызове Юзером юзера по DCC протоколу ему посылается текст:
<privmsg z123 DCC CHAT chat 2130706433 4000>
z123 - имя кому посылается
4000 - порт, там связь на прямую открывается и надо его указывать, т.е. порт на котором ты у себя откпываешь SocketServer.
2130706433 - некое число, догадываюсь что это спец формат адреса для Сокета, эдакий закодированный IP :). Но вот беда ... Получить то его можно :
serversocket1.Socket.Addr, а как преобразовать в String?

Может я ошибаюсь и это какое-то другое чистло ?
Плз если кто знает подскожите как получить СТРОКОВОЕвыражение для этого значения.


SeNtiMeL   (2003-02-03 02:14:00) [1]

TO NOODLEZ:
Скажи а как ты реализовал, чтобы текст в RichEdit добавлялся снизу, а не сверху как обычно ?
Я пишу чат для своей сети... И не могу найти решения....


mircscripts   (2003-01-30 19:07:00) [2]

Где можно скачать исходник IRC Server"a ??? скиньте на мыло ссылку плз


Noodlez   (2002-12-13 01:18:00) [3]

2 hogo
Всё это уже было, пользование чужих компонентов - направленый вред уму.


hogo   (2002-12-11 08:11:00) [4]

vortex.zip Vortex IRC v.2.0 (11kb) [ http://www.torry.net/vcl/internet/irc/vortex.zip]
ClusterDCC.pas here (ClusterDCC.pas) [ http://www.berzerk.net/vortex/ClusterDCC.pas]


Noodlez   (2002-12-03 12:26:00) [5]

2 Digitman. thx


Noodlez   (2002-12-03 12:25:00) [6]

Гы, методом научного тыка. Там ведь всё просто. Но есть 1 проблема ! в RFC не пишут про DCC ! Так что мне пришлось всё делать самому, различные снифы и т.д. :)


Malder   (2002-12-02 23:51:00) [7]

Прямо таки все перерыл ?

RFC 1459 можешь найти на http://rfc.x42.com/и в куче других мест. Только это устаревший, от 1993 года. Более новые RFC про IRC 2810-2813. И если ты их не читал, как ты можешь делать клиент IRC ?


Digitman   (2002-12-02 15:32:00) [8]

ну тебе все вот разжуй да в рот положи да проглоти за тебя)


> Удивительно, но эта функция выдаёт неправильный результат.


Как раз правильный здесь результат, ибо это - стандартный и документированный сетевой порядок, а не Intel-порядок.
А для преобразования из одного порядка в другой в Winsock есть спец.ф-ции


Noodlez   (2002-12-02 15:20:00) [9]

2 Morfein
Удивительно, но эта функция выдаёт неправильный результат.
После её расшифровки мы получаем не 127.0.0.1 а 0.0.0.127 или не 192.168.0.3 а 3.0.168.192 :)


Morfein   (2002-11-30 20:26:00) [10]

не-не... в формате in_addr, представленным строкой!

function GetLocalIp : string;
var
addr: TSockAddrIn;
phe: PHostEnt;
HostName: array[0..127] of char;
begin
GetHostName(@HostName, 128);
phe:=GetHostByName(@HostName);
if phe = nil then
exit
else
Result:=IntToStr(dword(plongint(Phe^.h_addr_list^)^));
end;


Digitman   (2002-11-30 12:23:00) [11]

см. inet_addr()


Noodlez   (2002-11-29 21:43:00) [12]

Да вообщето я всё уже сделал /каналы/сообщения/фичи, осталось только вызов на DCC. Как получить адрес своего компа в формате in_addr, представленным строкой.


Noodlez   (2002-11-29 21:39:00) [13]

Где ? всё перерыл ...


Morfein   (2002-11-29 20:45:00) [14]

Не извращайся со своими догадками, а посмотри спецификацию
IRC протокола - RFC1459


Noodlez   (2002-11-29 18:10:00) [15]

Плачу
Мне надо адрес моего компутера в виде "2130706433" - строковое выражение in_addr.
in_addr->String.
Обьясни мне, глупому, как бы сделал ты.


Digitman   (2002-11-29 13:49:00) [16]

Уж не знаю , чего ты там "кусал", но мне никак не понять, какую еще строку тебе нужно поиметь... вот это вот "2130706433" и так в строковом формате ты получаешь)

Или ты хочешь получить строковое представление УЖЕ ГОТОВОГО (расшифрованного уже тобой !) IP-адреса ? Если так , то см. ф-цию Winsock inet_ntoa()


Noodlez   (2002-11-29 13:21:00) [17]

Просто один юзер посылает другому приглашение, указывая свой IP а далее следует порт. Это подтверждено опытами.
а чисто 2130706433 я недавно раскусил - 127.0.0.1 зашифровано хитрожопым способом, но проблема получения этого значения в строковом виде осталась !


Digitman   (2002-11-29 08:16:00) [18]


> ему посылается текст



> 2130706433 - некое число


Нестыковочка) ... Сам же говоришь - посылается ТЕКСТ !
Т.е. 2130706433 - это уже СТРОКОВОЕ представление некоего числа.
А вот является ли оно "закодированным" IP-адресом - эт еще "бабушка надвое сказала")


> эдакий закодированный IP


На основании чего такие "догадки" ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо