احتمالاً کاربرانی را در Yahoo Messenger یا Live Messenger دیده اید که اصطلاحاً به آنها Bot می گویند . کاربرانی که در واقع یک نرم افزار هستند و به پیغام های شما پاسخ متناسب می دهد . برخی به عنوان dictionary استفاده می شوند یا بعضی برای چت کردن از تکنیک های هوش مصنوعی استفاده می کنند و می توانند مانند یک انسان واقعی جواب پیغام های شما را بدهند .
اکثر مسنجرها دارای API مخصوص به خود هستند ، اما دسته ای هستند که open source می باشند و می توان به آسانی از آنها استفاده کرد . Jabber یکی از آنهاست . Jabber دارای سرورهای مختلفی است که می تواند حتی به Yahoo Messenger نیز متصل شود . نرم افزارهایی که بر مبنای Jabber ساخته شده اند امکان اتصال به گوگل را نیز دارند .
اما هدف من فقط پیغام رسانی نیست . وقتی ADSL و IP Valid فراگیر شد اتصال به کامپیوترهای مختلف از راه دور می تواند خیلی مفید باشد . مثلا ً در دفتر کار خود هستید و به خانه متصل می شوید ، فایلهایی را انتقال می دهید و اتصال را قطع می کنید . برای این کار احتیاج به دانستن IP کامپیوتر خانه خود دارید . سایتی وجود دارد به نام DynDNS که به شما domain ی می دهد و با نرم افزار همین سایت امکان به روز رسانی ِ IP آن domain با توجه به IP فعلی کامپیوتر شما فراهم می شود . کافی است نام domain را به یاد داشته باشید و از هر جا به آن متصل شوید . در خیلی از مودم های ADSL نیز امکاناتی برای وارد کردن username و password این سایت وجود دارد تا خود مودم اطلاعات را بروز کند . اما ! api این سایت برای بروز رسانی در ایران فیلتر است ! . تا چند ماه پیش مشکلی وجود نداشت اما هم اکنون کار نمی کند . لااقل در ISP من !
مساله ، نوشتن نرم افزاری که با استفاده از کد کاربری Google در صورت نیاز ِ من ، IP کامپیوتری که در آن اجرا شده است را اطلاع دهد .
برای نوشتن این نرم افزار و اتصال به گوگل توسط Jabber ابتدا می بایست فایلهای کتابخانه ای مربوط به Jabber.NET (ویژه تکنولوژی دات نت) را از این جا دریافت کنید . (ایران فیلتر است !)
بعد از نصب فایل MSI ، می توانید به Toolbox خود در VS کنترل های مربوط به Jabber را اضافه کنید .
یک پروژه Windows Forms بسازید و سپس یک JabberClient و دو Button و یک Textbox روی فرم قرار دهید . در پنجره property های JabberClient1 سرور را gmail.com و کدکاربری و رمز عبور مورد نظر را وارد کنید .

روی دکمه Connect دبل کلیک کرده و در رویداد Click آن از کد زیر استفاده کنید .
JabberClient1.Connect()
JabberClient1.Login()
در رویداد Connect و Authenticate از JabberClient1 این کدها را به ترتیب بنویسد .
txtLog.Text &= "Connected" & ControlChars.NewLine
و
txtLog.Text &= "Authenticated" & ControlChars.NewLine
در رویداد OnMessage در JabberClient1 نیز این کد را استفاده کنید . این رویداد وقتی صدا زده می شود که پیغامی دریافت شود . این رویداد یک پارامتر به عنوان msg دارد که تمام اطلاعات فرستنده و پیغام در آن قرار دارد .
txtLog.Text &= msg.From.Bare & ControlChars.NewLine & msg.Body & ControlChars.NewLine
در رویداد کلیک در دکمه ارسال پیغام نیز این کد را استفاده کنید .
JabberClient1.Message("username@gmail.com", "salam")
با همین چند خط می توان پیغام ها را دریافت و ارسال کرد . در رویداد onMessage می توان متن پیام را بررسی کرد و متناسب با آن پیغام مناسبی در جواب فرستاد . مثلا ً اگر در متن پیامی که توسط شخص مورد نظر فرستاده شده عبارت give me ip آمده بود در جواب ، IP دستگاه ارسال شود یا مثلاً در bot های مترجم می توان ترجمه کلمه مورد نظر را در جواب به فرستنده ارسال کرد .
برای پیدا کردن IP اگر کامپیوتر مستقیم به اینترنت متصل باشد می توان IPهای کارت شبکه را فرستاد ولی اگر در NAT باشد راهی که من به فکرم رسید استفاده از یک سرور اینترنتی است . کافی است یک صفحه ای در اینترنت که در متنش IP بیننده آن است را صدا زده و محتویات برگشتی از سرور را به عنوان IP باز گردانیم .
در Notepad این خط را بنویسد .
< % = Request.ServerVariables("REMOTE_ADDR") % >
و سپس آن را به هر اسمی با پسوند asp ذخیره کنید و به سرور بفرستید (البته ویندوز !)
در نرم افزار bot هم از تابعی مشابه زیر استفاده کنید
Public
Function GetExternalIP As String
Dim WebReq As HttpWebRequest = HttpWebRequest.Create(URL)
Dim WebRes As HttpWebResponse = WebReq.GetResponse()
Dim ResStream As System.IO.Stream = WebRes.GetResponseStream
Dim ResStreamReader As New StreamReader(ResStream, Encoding.UTF8)
Dim IP As String = ResStreamReader.ReadToEnd
ResStream.Close()
WebRes.Close()
Return IP
End Function
که URL ، آدرس همان صفحه asp است .
این ساده ترین کاری بود که می شود با jabber انجام داد . با jabber می توان یک مسنجر کامل به همراه اضافاتی مانند همین IP ساخت .