第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

一個(gè)簡(jiǎn)單的web服務(wù)器

標(biāo)簽:
Html/CSS

一个简单的web服务器

首先需要引入命名空间: System.Net,关于网络编程的大部分类型及操作都可以在这个命名空间下找到。

IPAddress:类用来表示一个ip地址。

IPEndPoint:用来表示一个IP地址和一个端口号的组合,称为网络的端点。

System.Net.Sockets:命名空间中提供了基于Socket编程的数据类型。

Socket类封装了Socket的操作。

常见操作:

Listen:设置基于连接通信的socket进入监听状态,并设置等待队列的长度。

Accept:等待一个新的连接,当新连接到达的时候,返回一个针对新连接的Socket对象。通过这个新的socket对象,可以与新的连接通信。

Receive:通过Socket接收字节数据,保存到一个字节数组中,返回实际接收的字节数。

Send:通过socket发送预先保存在字节数组中的数据。

通过socket创建一个简单的web服务器,通过端口8888访问该服务器,向浏览器返回一个静态页面。这个示例,通过浏览器发送请求,并由服务器生成消息响应给浏览器。

web服务器


using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net;using System.Net.Sockets;namespace WebServer
{    class Program
   {        static void Main(string[] args)
       {            //取得本机的loopback网络地址,即127.0.0.1
           IPAddress ip = IPAddress.Loopback;            //创建可以访问的端点,8888表示一个端口号,如果设置为0,表示一个空闲的端口号
           IPEndPoint endPoint = new IPEndPoint(ip, 8888);            //创建socket,使用ipv4地址,传输控制协议tcp,双向可靠基于连接的字节流
           Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            //将socket绑定到一个端点上            socket.Bind(endPoint);            //设置连接队列的长度
           socket.Listen(10);
           Console.WriteLine(" 开始监听,端口号:{0}", endPoint.Port);            while (true)
           {                //开始监听,这个方法会阻塞线程的执行,直到收到一个客户端的连接请求
               Socket client = socket.Accept();                //输出客户端的地址                Console.WriteLine(client.RemoteEndPoint);                //准备读取客户端请求的数据,去读的数据将保存在一个数组中
               byte[] buffer = new byte[4096];                //接收数据
               int length = client.Receive(buffer, buffer.Length, SocketFlags.None);                //将请求的数据翻译为utf8
               System.Text.Encoding utf8 = System.Text.Encoding.UTF8;                string requestString = utf8.GetString(buffer, 0, length);                //打印请求内容                Console.WriteLine(requestString);                //回应的状态行
               string statusLine = "HTTP/1.1 200 OK\r\n";                byte[] statusLineBuffer = utf8.GetBytes(statusLine);                //准备发送到客户端的网页
               string responseBody = "<html><head><title>这是一个web服务器的测试</title></head><body><h1>Hello World.</h1></body></html>";                byte[] responseBodyBuffer = utf8.GetBytes(responseBody);                //回应的头部
               string responseHeader = string.Format(                    "Content-Type:text/html;charset=UTF-8\r\nContent-Length: {0}\r\n", responseBodyBuffer.Length);                byte[] responseHeaderBuffer = utf8.GetBytes(responseHeader);                //向客户端发送状态消息                client.Send(statusLineBuffer);                //向客户端发送回应头                client.Send(responseHeaderBuffer);                //头部与内容的分割行
               client.Send(new byte[] { 13, 10 });                //向客户端发送内容部分                client.Send(responseBodyBuffer);                //断开与客户端的连接                client.Close();                //关闭服务器                socket.Close();                break;
           }
           Console.Read();
       }
   }
}


启动服务器,并在浏览器中输入http://localhost:8888/

服务端收到的请求内容

总结

通过搭建这个简单的web服务器,了解你在浏览器输入地址,然后回车,服务端是如何处理的以及如何响应的。

 

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消