使用Socket的简单Web服务器
Socket类在System.Net.Sockets命名空间
常用的操作
Bind:绑定一个本地的终结点
Listen:进入监听状态,并设置等待队列
Accept:等待一个新连接,当连接到达时,返回一个新的socket对象。通过新的socket对象,与新连接通讯
Receive:接受字节数据,保存到一个字节数组里,并返回字节数
Send:发送响应数据
using System;
using System.Net;
using System.Net.Sockets; namespace WebSocket
{
class Program
{
static void Main(string[] args)
{
//本机的loopback环回地址,即127.0.0.1
IPAddress address = IPAddress.Loopback;
//初始化地址和端口
IPEndPoint endPoint = new IPEndPoint(address, );
//创建socket
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(endPoint);
socket.Listen();
Console.WriteLine("Listening Port:{0}",endPoint.Port);
while (true)
{
//为连接创建新的socket,开始监听
Socket client = socket.Accept();
//接受数据的数组
byte[] buffer = new byte[];
//接受数据
int length = client.Receive(buffer, SocketFlags.None);
//utf8 编码
System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
//请求的数据
string requestStr = utf8.GetString(buffer, , length);
Console.WriteLine("Request String:{0}",requestStr); //回应主体、头部等..
string responseBody = "<html><head></head><body><h1>Hello</h1></body></html>";
byte[] responseBodyBytes = utf8.GetBytes(responseBody);
client.Send(responseBodyBytes); client.Close();
if (Console.KeyAvailable)
{
break;
}
}
socket.Close();
}
}
}
运行后,在浏览器输入http://localhost:59152/
使用Socket的简单Web服务器的更多相关文章
- C#中使用Socket实现简单Web服务器
上一篇博客中介绍了怎样使用socket访问web服务器.关键有两个: 熟悉Socket编程: 熟悉HTTP协议. 上一篇主要是通过socket来模拟浏览器向(任何)Web服务器发送(HTTP)请求,重 ...
- Python Socket实现简单web服务器
#!/usr/bin/python env # coding:utf-8 import socket ip_port = ('127.0.0.1', 80) back_log = 10 buffer_ ...
- Socket网络编程--简单Web服务器(1)
这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码 ...
- Socket网络编程--简单Web服务器(6)
本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息 ...
- tomcat解析之简单web服务器(图)
链接地址:http://gogole.iteye.com/blog/587163 之前有javaeyer推荐了一本书<how tomcat works>,今天晚上看了看,确实不错,第一眼就 ...
- 运用socket实现简单的服务器客户端交互
Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...
- Java 18 新特性:简单Web服务器 jwebserver
在今年3月下旬的时候,Java版本已经更新到了18.接下来DD计划持续做一个系列,主要更新从Java 9开始的各种更新内容,但我不全部都介绍,主要挑一些有意思的内容,以文章和视频的方式来给大家介绍和学 ...
- Socket网络编程--简单Web服务器(2)
上一小节通过阅读开源的Web服务器--tinyhttpd.大概知道了一次交互的请求信息和应答信息的具体过程.接下来我就自己简单的实现一个Web服务器. 下面这个程序只是实现一个简单的框架出来.这次先实 ...
- Socket网络编程--简单Web服务器(3)
上一小节已经实现了浏览器发送请求,然后服务器给出应答信息,然后浏览器显示出服务器发送过来的网页.一切看起来都是那么的美好.这一小节就准备实现可以根据地址栏url的不同来返回指定的网页.目前还不考虑带参 ...
随机推荐
- 【Coursera】Third Week(1)
The Early World-Wide-Web 关于CERN 欧洲核子研究组织,除了它为世界物理学所作出的卓越贡献,它还是世界上第一个网站,第一个网络服务器,第一个浏览器的诞生地. Robert C ...
- UVa 120 煎饼
https://vjudge.net/problem/UVA-120 题意:颠倒连续子序列,使之成为升序. 思路:按照从大到小的顺序,依次选择出一个数字进行分析: ①如果该数字已经在正确的位置上,则不 ...
- spring cloud kubernetes之serviceaccount permisson报错
spring boot项目引用spring-cloud-starter-kubernetes <dependency> <groupId>org.springframework ...
- python 连加
sum= number=int(input('请输入整数: ')) #递增for循环,从小到大打印出数字 print('从小到大排列输出数字:') ,number+): sum+=i #设置sum为i ...
- 哈希表-java
import java.util.HashMap; import java.util.Iterator; public class JavaHashMap { public static void m ...
- MongoDB(课时8 模运算)
3.4.2.3 求模 模运算使用“$mod”来完成,语法: {$mod : [除数,余数]} 范例:求模 db.students.find({"age" : {"$mod ...
- Codeforces 899E - Segments Removal
899E - Segments Removal 思路:priority_queue+pair 代码: #include<bits/stdc++.h> using namespace std ...
- es5,es6,typescript,nodejs
es5新特性 讲到js必讲的几个概念,作用域,闭包,IIFE自执行函数 es5主要是对Object,Array,Function做了扩展,还有josn工具 es6新特性 增加了新的数据类型 WeakM ...
- spring boot:创建一个简单的web(maven web project)
1.新建一个maven web project; 2.在pom.xml文件中添加相应的依赖包: 3.新建一个HelloController请求控制类: 4.编写index.jsp页面: 5.编写启动类 ...
- py to exe —— pywin32
xu言: 最近研究python,觉得做些windows小工具还挺好玩,就研究了下py代码如何转成exe 这里用到一个工具 pywin32 https://sourceforge.net/project ...