PDA

View Full Version : سوال: نحوه استفاده از Embedded Web Server در برنامه های ویندوزی



RamezanBeik
یک شنبه 26 آذر 1391, 16:40 عصر
با سلام وخسته نباشید
من می خوام برنامه ای(دسکتاپ) بنویسم که در داخل خودش از یک وب سرور استفاده کنه.منظورم اینه که نمی خوام وب سرور بر روی IIS و یا بر روی هر چیز دیگری فعال بشه.
این برنامه دارای یه ListBox هستش و یه مقدار اطلاعات هم داخل اون وجود داره حال فرض کنید که کاربر دیگری از کامپیوتر دیگری و از طریق مرورگر اینترنت ای پی دستگاه من رو می زنه ، بتونه اطلاعاتی رو که داخل ListBox هستش رو ببینه واگر تغییراتی در اون اعمال کرد ، این تغییرات هم در برنامه سمت دستکتاپ اعمال بشه.
فقط شنیدم که با Embedded Web Server می شه این کار رو انجام داد اما نمی دونم که اصلا چی هست و یا اصلا یه همچین چیزی هست یا خیر.در صورت امکان نمونه کدی هم قرار دهید ممنون می شم. در صورت امکان راهنمایی فرمایید و یا اگر راه حل دیگه ای به نظر مهندسین عزیز می رسه راهنمایی فرمایید.
با تشکر قبلی از کمک و راهنمایی شما عزیزان.:خجالت:

RamezanBeik
دوشنبه 27 آذر 1391, 17: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, 11:04 صبح
دوستان کسی در مورد Microsoft Cassini چیزی می دنه؟

RamezanBeik
سه شنبه 05 دی 1391, 16:55 عصر
به امید خدا تا چند وقت دیگه یه برنامه برای شما مشتاقان عزیز قرار می دم