View Full Version : سوال: نحوه استفاده از Embedded Web Server در برنامه های ویندوزی
RamezanBeik
یک شنبه 26 آذر 1391, 17:40 عصر
با سلام وخسته نباشید
من می خوام برنامه ای(دسکتاپ) بنویسم که در داخل خودش از یک وب سرور استفاده کنه.منظورم اینه که نمی خوام وب سرور بر روی IIS و یا بر روی هر چیز دیگری فعال بشه.
این برنامه دارای یه ListBox هستش و یه مقدار اطلاعات هم داخل اون وجود داره حال فرض کنید که کاربر دیگری از کامپیوتر دیگری و از طریق مرورگر اینترنت ای پی دستگاه من رو می زنه ، بتونه اطلاعاتی رو که داخل ListBox هستش رو ببینه واگر تغییراتی در اون اعمال کرد ، این تغییرات هم در برنامه سمت دستکتاپ اعمال بشه.
فقط شنیدم که با Embedded Web Server می شه این کار رو انجام داد اما نمی دونم که اصلا چی هست و یا اصلا یه همچین چیزی هست یا خیر.در صورت امکان نمونه کدی هم قرار دهید ممنون می شم. در صورت امکان راهنمایی فرمایید و یا اگر راه حل دیگه ای به نظر مهندسین عزیز می رسه راهنمایی فرمایید.
با تشکر قبلی از کمک و راهنمایی شما عزیزان.:خجالت:
RamezanBeik
دوشنبه 27 آذر 1391, 18:13 عصر
درود بر شما من دیروز این تاپیک رو زدم .و روی این قضیه شروع به فعالیت کردم من این برنامه رو نوشتم و به یه جاهایی هم رسیده .اما در حال حاضر مشکل ها زیر هنوز پا بر جا هست که عبارتند از:
1-نحوه انتقال اطلاعات از ListBox به Text Area در مرورگر.
2-در صورت تغییر اطلاعات در مرور گر اطاعات بر روی فرم هم عوض شود.
3-عملکرد صحیح برنامه فقط در صورتی که VS در حالت Run As Adminidtrator اجرا شود.
من برنامه رو که نوشتم در اینجا برای شما قرار می دهم و خواهش می کنم که یه نگاهی به اون بندازید و راهنمایی کنید و اصلا ببنید که راهی که من رفتم درست هستش یا خیر؟
public conststring Address = "http://192.168.1.233:27101/";
public HttpListener Listener=newHttpListener();
public HttpListenerContext Context;
public HttpListenerRequest Request;
public Thread listenThread;
#region
Definition Html For Brwoser
publicstring html = "<form method=post action=/form><table id=MainTabel align=center class=style2 dir=rtl><tr><td><table align=center class=style3 dir=rtl><tr><td colspan=4> <textarea id=TextArea1 cols=50 name=S1 rows=2></textarea><tr><td colspan=4><table align=center dir=ltr><tr><td>SomeText:</td><td> <input id=Text1 type=text /><tr><td colspan=2><input id=Button1 type=button value=Delet /></td><td colspan=2><input id=Button2 type=button value=ADD /></td></tr><tr><td>Daily Report</td><td><input id=Checkbox1 type=checkbox /></td><td>Month Report</td><td><input id=Checkbox2 type=checkbox /></td></tr></td></tr> </tabel> </td></tr> </td> </tr> </tabel> </td></tr> </tabel></form>";
#endregionublic Form1()
{
InitializeComponent();
}
privatevoid Form1_Load(object sender, EventArgs e)
{
//RestartAsAdmin();
Detail_listBox.Items.Add(
"Initializing:"+DateTime.Now.ToShortTimeString());
// setup listener
Listener.Prefixes.Add(Address);
//timer1.Interval = 3000;
//timer1.Enabled = true;
listenThread =
newThread(WorkEmbeddedWebServer);
listenThread.IsBackground =
true;
listenThread.Priority =
ThreadPriority.AboveNormal;
listenThread.Start();
}
ivatevoid WorkEmbeddedWebServer()
{
try
{
// start listening
Listener.Start();
// request -> response loop
while (true)
{
Context = Listener.GetContext();
Request = Context.Request;
/* respond to the request.
* in this case it'll show "Server appears to be working".
* regardless of what file/path was requested.
*/
using (HttpListenerResponse Response=Context.Response)
{
byte[] data=Encoding.UTF8.GetBytes(html);
Response.ContentType = "text/html";
Response.ContentLength64 = data.Length;
using (Stream outpout=Response.OutputStream)
{
outpout.Write(data, 0, data.Length);
}
}
}
}
catch (Exception)
{
Listener.Close();
}
}
RamezanBeik
چهارشنبه 29 آذر 1391, 12:04 عصر
دوستان کسی در مورد Microsoft Cassini چیزی می دنه؟
RamezanBeik
سه شنبه 05 دی 1391, 17:55 عصر
به امید خدا تا چند وقت دیگه یه برنامه برای شما مشتاقان عزیز قرار می دم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.