最低限の動作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
public partial class Form1 : Form { public Form1() { InitializeComponent(); var httpListener = new HttpListener(); httpListener.Prefixes.Add("http://localhost:30000/"); httpListener.Start(); while (true) { var context = httpListener.GetContext(); var request = context.Request; var response = context.Response; byte[] content = Encoding.GetEncoding("shift_jis").GetBytes(request.RawUrl.ToString()); try { response.OutputStream.Write(content, 0, content.Length); } catch { } finally { response.Close(); } } } } |
あるいはこんな書き方
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
public partial class Form1 : Form { public Form1() { InitializeComponent(); var httpListener = new HttpListener(); httpListener.Prefixes.Add("http://localhost:30000/"); httpListener.Start(); while (true) { httpListener.BeginGetContext(new AsyncCallback((result) => { HttpListener listener = (HttpListener)result.AsyncState; HttpListenerContext context = listener.EndGetContext(result); var request = context.Request; var response = context.Response; byte[] content = Encoding.GetEncoding("shift_jis").GetBytes(request.RawUrl.ToString()); response.OutputStream.Write(content, 0, content.Length); response.Close(); }), httpListener); } } } |
フォームを使う場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
public partial class Form1 : Form { HttpListener httpListener; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (httpListener != null) return; this.Text = "待受中..."; httpListener = new HttpListener(); httpListener.Prefixes.Add("http://localhost:30000/"); Task task = Task.Run(()=> { httpListener.Start(); while (true) { var context = httpListener.GetContext(); var request = context.Request; var response = context.Response; byte[] content = Encoding.GetEncoding("shift_jis").GetBytes(request.RawUrl.ToString()); response.OutputStream.Write(content, 0, content.Length); response.Close(); } }); } private void button2_Click(object sender, EventArgs e) { if (httpListener == null) return; httpListener.Stop(); httpListener.Close(); httpListener = null; this.Text = "テスト"; } } |