Socket 初识 用Socket建立一个简易Web服务器

2020-12-02 03:31

阅读:420

YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

标签:com   http   blog   style   class   div   img   code   log   c   tar   

 

摘自《Asp.Net 本质论》作者:郝冠军

//在.Net中。system.Net命名空间提供了网络编程的大多数数据据类型以及常用操作,其中常用的类型如下:
/*
IPAddress 类表示一个IP地址
* IPEndPoint类用来表示一个IP地址和一个端口号的组合,成为网络的端点。
* System.Net.Sockets命名空间中提供了基于Socked编程的数据类型。
* Socket类封装了Socked的操作。
* 常见的操作:
* Listen:设置基于连接通信的Socket进入监听状态,并设置等待队列的长度。
* Accept:等待一个新的连接,当新的连接到达的时候,返回一个针对新连接的Socket对象。通过这个新的Socket对象,可以与新连接通信。
* Receive:通过Socked接受字节数据,保存到一个字节数组中,返回实际接受的字节数。
* Send:通过Socked发送预先保存在字节数组中的数据。
*/

soscw.com,搜素材soscw.com,搜素材
 1 class Socket_Study
 2     {
 3         public void CreateSocket()
 4         {
 5             //获得本机的loopback网络地址,即127.0.0.1
 6             IPAddress address = IPAddress.Loopback;
 7             //创建可以访问的端点,8974 为0表示一个空闲的端口号
 8             IPEndPoint endpoint = new IPEndPoint(address, 8974);
 9             Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
10             socket.Bind(endpoint);
11             socket.Listen(10);
12             Console.WriteLine("开始监听,端口号:{0}",endpoint.Port);
13             while (true)
14             {
15                //开始监听,这个方法会阻塞线程的执行,知道接收到一个客户端的连接请求
16                 Socket client = socket.Accept();
17                 Console.WriteLine(client.RemoteEndPoint);
18                 //准被读取客户端请求的数据,读取的数据放在一个数组中
19                 byte[] buffer = new byte[4096];
20 
21                 int lentth = client.Receive(buffer, 4096, SocketFlags.None);
22 
23                 string requeststring = Encoding.UTF8.GetString(buffer, 0, lentth);
24 
25                 Console.WriteLine(requeststring);
26                 //回应状态行
27                 string statusLine = "Http/1.1 200 ok \r\n";
28                 byte[] statusLineBytes = Encoding.UTF8.GetBytes(statusLine);
29                 //准备发送到客户端的网页
30                 string responseBody = "
Socket Study 
Hello World ,Socket Study
"; 31 byte[] responseBytes = Encoding.UTF8.GetBytes(responseBody); 32 string responseHeader = string.Format("Content-type:text/html; charset=UTF-8 \r\nContent-length:{0}\r\n", responseBody.Length); 33 byte[] responseHeaderBytes = Encoding.UTF8.GetBytes(responseHeader); 34 //向客户端发送状态信息 35 client.Send(statusLineBytes); 36 //发送回应头 37 client.Send(responseHeaderBytes); 38 client.Send(new byte[]{13,10}); 39 //发送内容 40 client.Send(responseBytes); 41 client.Close(); 42 if (Console.KeyAvailable) 43 { 44 break; 45 } 46 socket.Close(); 47 } 48 } 49 }
View Code

 

  运行之后打开浏览器 输入地址:http://localhost:8974/

   即可看到结果。

Socket 初识 用Socket建立一个简易Web服务器,搜素材,soscw.com

Socket 初识 用Socket建立一个简易Web服务器

标签:com   http   blog   style   class   div   img   code   log   c   tar   

原文地址:http://www.cnblogs.com/lengp/p/3699531.html


评论


亲,登录后才可以留言!