第1回 Web の仕組みについて
公開日:2015-04-26 更新日:2019-05-11
1. 概要
独り言による Webプログラミング講座、「第1回 Web の仕組みについて」です。
2. 動画
3. 簡易Webサーバのソース
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Threading;
using System.Net;
using System.Net.Sockets;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//★独り言によるWebプログラミング講座
//■Webの仕組みについて
}
private void button1_Click(object sender, EventArgs e)
{
//リスナーを設定します
IPAddress ip = IPAddress.Parse("127.0.0.1");
int port = 80;
TcpListener listener = new TcpListener(ip, port);
//リクエストの受付開始
listener.Start();
//while (true) {
TcpClient client = listener.AcceptTcpClient(); //リクエストが来るまで待機
//リクエストの取得
NetworkStream stream = client.GetStream();
//クライアントから送られたデータを受信する
byte[] data = new byte[256]; //読み込んだリクエストデータの一部分
int size = 0; //読み込んだサイズ
StringBuilder sb = new StringBuilder();
while((size = stream.Read(data, 0, data.Length)) != 0) {
sb.Append(Encoding.ASCII.GetString(data, 0, size));
if (stream.DataAvailable == false) break; //読み込むデータがなくなったら抜ける。
//これをしないとRead()で待機してしまう。
}
//クライアントからのリクエスト内容の表示
txtRequest.Text = sb.ToString();
//パスの取得
String filename = sb.ToString().Split('\n').First().Split(' ')[1];
//ファイル読み込み
//String html = File.ReadAllText(filename.Substring(1));
String html = txtAnswer.Text;
//クライアントにデータを返す
byte[] htmlData = Encoding.UTF8.GetBytes(html);
stream.Write(htmlData, 0, htmlData.Length);
stream.Close();
client.Close();
//}
listener.Stop();
}
}
}