نوشتن چت پیشرفته با سی شارپ
سلام
ایجاد یک چت روم در اتوماسیون داخلی سازمانها و ادارات مسئله ی زیاد پیچیده و مشکلی نیست. ولی موردی که من در موردش زیاد سرچ زدم و توی سایتهای خارجی چیزی پیدا نکردم ابنه که میخوام همراه با پیام نمایش داده شده از هرکاربر برای کاربر مشاهده کننده، تصویر کاربری اون همراه با هر پیام ارسال و نمایش داده بشه.
چیزی شبیه به تصویر زیر:
از دوستان کسی میدونه با سی شارپ چطوری میشه این امکاندهی را به چت روم شبکه های داخلی کاربران ( با ویندوز فرم) پیاده سازیش کرد؟
5 پاسخ
سلام دوست عزیز، برنامه های چت داخل سازمانی معمولاً از پروتکل TCP استفاده می کنن، حالا اینکه شما تصاویر رو بخوایید نمایش بدید، کافیه تو اطلاعاتی که از طریق Chat Server به سمت Client ها ارسال میشه، اطلاعات کاربر ارسال کننده مانند تصویر و نام رو به همراه پیام ارسال کنید.
سلام دوست عزیز تا اونجایی که من می دونم شما می تونید توسط یک اتصال TCP یا UDP در یک شبکه اطلاعات بفرستید و دریافت کنید که نیاز به چند اتصال و این قطعه کد داره :(TCP)
سرویس دهنده using System; using System.IO; using System.Net.Sockets; TcpListener listener = new TcpListener ( 8080 ); listener.Start (); Socket s = listener.AcceptSocket (); NetworkStream ns = new NetworkStream ( s ); StreamReader r = new StreamReader ( ns );// می تونید خط به خط مورد ارسال شده را بخونید string result = "heloo"; Byte[] res = System.Text.Encoding.ASCII.GetBytes ( result.ToCharArray () ); s.Send ( res, res.Length, 0 );//اطلاعات را ارسال کنید
حال بر اساس نیاز خود result را مقدار دهی کنید .
شما برای اینکه result را به عنوان یک عکس ارسال کنید باید فایل عکس را به کد های باینری تبدیل کنید و بفرستید.
این قطعه کد:
FileStream From = new FileStream("C:\...",FileMode.Open); FileStream To = new FileStream("C:\...",FileMode.CreateNew); byte[] buffer = new byte[1024]; System.IO.BinaryReader Reader = new System.IO.BinaryReader(From);//فایل منبع int NumRead; NumRead = Reader.Read(buffer, 0, 1024); System.IO.BinaryWriter Writer = new System.IO.BinaryWriter(To); //فایل مقصد Writer.Write(buffer, 0, NumRead);
حال بسته به نیاز خودتون می تونید عکس را ارسال کنید.
توجه داشته باشید که کد TCP را اگه بخوایید در ویندوز فرم استفاده کنید باید کد های ارسال و دریافت را کلاس بندی کنید و بعد با یک فایل dll در ویندوز فرم ارتباطش دهید
سلام
راستش مهندس منم هینطور فکر میکردم ولی برام جالب بود که اصلاً مطلبی راجع به ارسال تصویر به این روش پیدا نکردم. در هر صورت ممنون... تست میکنم ببینم جوابگو هست یا نه.
پیشنهاد میکنم اطلاعات رو به صورت JSON تبدیل کنید و به صورت Binary تحت شبکه ارسال کنید، بعد در سمت Client می تونید براحتی اطلاعات ارسال شده رو Deserialize و تبدیل به شئ کنید.