![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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
На основании чего такие "догадки" ?