Автор
|
Тема: Как в C++ Builder'е узнать имя хоста
|
Del |
опубликован 28-05-2001 19:31 MSK
Я пишу на C++ Builder'е чат для локалы. Всё приколно, но я не знаю как сделать так, чтоб прога сама узнавала сетевое имя копма, на котором она запушена. Приходиться просить юзера ввести свой хост - а это suxx. Кто может дать дельный совет - please дайте его.
|
DEiL
|
опубликован 29-05-2001 01:05 MSK
8-[ ] ээ... либо я чего-то не понимаю, либо... :) TForm1::OnClientConnect(<..>) { <..> AnsiString MyAddr = Socket.LocalHost; AnsiString MyIP = Socket.LocalAddress; AnsiString HisAddre = Socket.RemoteHost; AnsiString HisIP = Socket.RemoteAddress; }; пишу по памяти, так что :)) |
Del
|
опубликован 12-06-2001 18:42 MSK
Ты непонял:-) Я только начинаю кодить на С++ и потому и юзаю С++Builder. Я пишу чат не через голый API, а юзая VCL (да,да,да! - но новичкам простительно ;-) Юзаються компоненты с FastNet'a: для отправки: TNMMsg *NMMsg1 для приёма : TNMMSGServ *NMMSGServ1; Как узнать имя компа на котором запустилься чат с их помощью (если через API, то если не в падлу, плиз, напиши весь код). Если пригодиться привожу пример отправки: NMMsg1->Host = "comp-1"; NMMsg1->FromName = "comp-2"; NMMsg1->PostIt("Hi!"); и приёма: void __fastcall TfmMain::NMMSGServ1MSG(TComponent *Sender,const AnsiString sFrom, const AnsiString sMsg) { Memo1->Lines->Add(sMsg); } ну это в примитивном варианте - я сам конечно вывожу покрасивее да и отправляю отдельной функцией с параметрами. |
Susik
|
опубликован 13-06-2001 13:24 MSK
Удобнее было бы юзать компоненты TClientSocket и TServerSocket. Как раз товарищ перед этим на это и намекал... :)) |
Del
|
опубликован 13-06-2001 13:44 MSK
Так TNMMsg и TNMMSGServ имеют удобный параметр - sFrom - от кого пришла мессага, а юзая ClientSocket и ServerSocket пришлось бы наредкость извратиться, чтоб передать ник (или имя хоста) того кто послал мессагу, вмесьте с самой мессагой. |
Susik
|
опубликован 13-06-2001 16:15 MSK
Так а ты посылай вместе с мессагой. Пихай прям в начало мессаги свое имя/ник/хост - что угодно! И там после него какой-нить управляющий символ. Если хошь, я набилдере в свое время делал чат на этих 2 компонентах, причем, получилась многосерверная и одновременно многоклиентская система, тестировал в школе :). Там я ник в начало мессаги пихал, к в чате, а после него - двоеточие и мессагу. |
Del
|
опубликован 14-06-2001 10:03 MSK
Так тоже можно, но с FastNet'oм правда проще:-) А вообше это мысль насчёт Socket'ов. Насколько я понял, хост узнаёться из свойств TClientSocket'a или TServerSocket'a, но я не уверен, что правильно понял как именно он узнаёться. Напиши кусок кода плиз. ЗЫ: Если не жалко скинь мне на мыло сорцы твоего чата mailto:del@xakep.ru |
webmaster
|
опубликован 14-06-2001 11:45 MSK
на чём бы ты не кодил, но если хочешь делать сетевые программки, то неплохо бы представлять себе такие функции как socket, bind, listen, accept, send, receive. А пока не поймёшь как они работают - будешь постоянно испытывать подобные трудности ..IMHO это моё мнение :)
|
Del
|
опубликован 18-06-2001 13:33 MSK
Дык, я что буду летом делать? Я ж и буду FAQ'и читать. Просто я только начал на сях кодить... Susik >> thanks за сорцы, посмотрю...
|