Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sunxiaotianmg
Mozi.HttpEmbedded
提交
597bc873
M
Mozi.HttpEmbedded
项目概览
sunxiaotianmg
/
Mozi.HttpEmbedded
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
Mozi.HttpEmbedded
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
597bc873
编写于
7月 06, 2021
作者:
JasonWcx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
No commit message
No commit message
上级
dac7a0e3
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
74 addition
and
13 deletion
+74
-13
Mozi.HttpEmbedded.Test/Program.cs
Mozi.HttpEmbedded.Test/Program.cs
+1
-1
Mozi.HttpEmbedded/Readme.md
Mozi.HttpEmbedded/Readme.md
+18
-3
Mozi.SSDP/Discovery.cs
Mozi.SSDP/Discovery.cs
+4
-4
Mozi.SSDP/SSDPService.cs
Mozi.SSDP/SSDPService.cs
+50
-4
README.md
README.md
+1
-1
未找到文件。
Mozi.HttpEmbedded.Test/Program.cs
浏览文件 @
597bc873
...
...
@@ -107,7 +107,7 @@ namespace Mozi.HttpEmbedded.Test
sr
.
USN
=
service
.
USN
;
sr
.
ST
=
pack
.
ST
;
sr
.
Server
=
service
.
Server
;
//
service.EchoSearch(sr);
service
.
EchoSearch
(
sr
);
}
private
static
void
Ssdp_OnNotifyAliveReceived
(
object
sender
,
SSDP
.
AlivePackage
pack
,
string
host
)
...
...
Mozi.HttpEmbedded/Readme.md
浏览文件 @
597bc873
...
...
@@ -59,8 +59,21 @@ Mozi.HttpEmbedded在Socket之上使用异步单线程模型,构建了一个HTTP
支持GZip,Deflate算法
8.
字符编码
字符编码使用UTF-8
字符编码使用UTF-8
## 项目地址
-
[
Github
][
github
]
-
[
Gitee
][
gitee
]
-
[
CSDN
][
codechina
]
## 程序下载
~~~
shell
dotnet add package Mozi.HttpEmbedded
--version
1.2.5
~~~
## 功能与版本迭代
不定期对Mozi.HttpEmbedded的功能进行完善,解决各种BUG。HTTP标准功能繁多,需要一步步实现。
...
...
@@ -90,7 +103,6 @@ Mozi.HttpEmbedded在Socket之上使用异步单线程模型,构建了一个HTTP
hs
.
SetVirtualDirectory
(
"config"
,
AppDomain
.
CurrentDomain
.
BaseDirectory
+
@"Config\"
);
Router
router
=
Router
.
Default
;
//注入API
//1,此方法会扫描程序集内继承自BaseApi或属性标记为[BasicApi]的类
//2,Http通讯数据标准默认为xml,使用Router.Default.SetDataSerializer(ISerializer ser)更改序列化类型
...
...
@@ -106,4 +118,7 @@ Mozi.HttpEmbedded在Socket之上使用异步单线程模型,构建了一个HTTP
### By [Jason][1] on Feb. 5,2020
[
1
]:
mailto:brotherqian@163.com
\ No newline at end of file
[
1
]:
mailto:brotherqian@163.com
[
gitee
]:
https://gitee.com/myui_admin/mozi.git
[
github
]:
https://github.com/MoziCoder/Mozi.HttpEmbedded.git
[
codechina
]:
https://codechina.csdn.net/mozi/mozi.httpembedded.git
\ No newline at end of file
Mozi.SSDP/Discovery.cs
浏览文件 @
597bc873
...
...
@@ -71,7 +71,7 @@ namespace Mozi.SSDP
headers
.
Add
(
"MAN"
,
"\""
+
SSDPType
.
Discover
.
ToString
()
+
"\""
);
headers
.
Add
(
"ST"
,
ST
.
ToString
());
headers
.
Add
(
"CACHE-CONTROL"
,
$"max-age =
{
CacheTimeout
}
"
);
headers
.
Add
(
"DATE"
,
DateTime
.
UtcNow
.
ToString
(
"r"
));
//
headers.Add("DATE", DateTime.UtcNow.ToString("r"));
headers
.
Add
(
"EXT"
,
""
);
headers
.
Add
(
"LOCATION"
,
Location
);
headers
.
Add
(
"SERVER"
,
Server
);
...
...
@@ -142,7 +142,7 @@ namespace Mozi.SSDP
public
static
SearchPackage
Parse
(
HttpRequest
req
)
{
SearchPackage
pack
=
new
SearchPackage
();
var
sHost
=
req
.
Headers
.
GetValue
(
"HOST"
);
var
sHost
=
req
.
Headers
.
GetValue
(
"HOST"
)
??
req
.
Headers
.
GetValue
(
"Host"
)
;
pack
.
HOST
=
sHost
;
//IPV4
string
[]
hostItmes
=
sHost
.
Split
(
new
char
[]
{
':'
},
StringSplitOptions
.
RemoveEmptyEntries
);
...
...
@@ -183,7 +183,7 @@ namespace Mozi.SSDP
public
static
ByebyePackage
Parse
(
HttpRequest
req
)
{
ByebyePackage
pack
=
new
ByebyePackage
();
var
sHost
=
req
.
Headers
.
GetValue
(
"HOST"
);
var
sHost
=
req
.
Headers
.
GetValue
(
"HOST"
)
??
req
.
Headers
.
GetValue
(
"Host"
)
;
pack
.
HOST
=
sHost
;
//IPV4
string
[]
hostItmes
=
sHost
.
Split
(
new
char
[]
{
':'
},
StringSplitOptions
.
RemoveEmptyEntries
);
...
...
@@ -221,7 +221,7 @@ namespace Mozi.SSDP
public
new
static
UpdatePackage
Parse
(
HttpRequest
req
)
{
UpdatePackage
pack
=
new
UpdatePackage
();
var
sHost
=
req
.
Headers
.
GetValue
(
"HOST"
);
var
sHost
=
req
.
Headers
.
GetValue
(
"HOST"
)
??
req
.
Headers
.
GetValue
(
"Host"
)
;
pack
.
HOST
=
sHost
;
//IPV4
string
[]
hostItmes
=
sHost
.
Split
(
new
char
[]
{
':'
},
StringSplitOptions
.
RemoveEmptyEntries
);
...
...
Mozi.SSDP/SSDPService.cs
浏览文件 @
597bc873
...
...
@@ -165,6 +165,11 @@ namespace Mozi.SSDP
{
};
/// <summary>
/// 搜索程序定义的默认类型
/// urn:{domain}:device:1
/// </summary>
public
TargetDesc
DeviceDefault
=
new
TargetDesc
();
public
event
NotifyAliveReceived
OnNotifyAliveReceived
;
public
event
NotifyByebyeReceived
OnNotifyByebyeReceived
;
...
...
@@ -195,6 +200,9 @@ namespace Mozi.SSDP
PackDefaultByebye
.
USN
=
new
USNDesc
()
{
IsRootDevice
=
true
,
DeviceId
=
UUID
.
Generate
(),
Domain
=
"mozi.org"
};
DeviceDefault
.
Domain
=
Domain
;
DeviceDefault
.
ServiceType
=
ServiceCategory
.
Device
;
DeviceDefault
.
Version
=
1
;
}
/// <summary>
/// 数据接收时间
...
...
@@ -203,12 +211,14 @@ namespace Mozi.SSDP
/// <param name="args"></param>
private
void
_socket_AfterReceiveEnd
(
object
sender
,
DataTransferArgs
args
)
{
//TODO 如何进行多包分割?
ParsePackage
(
args
);
if
(
OnMessageReceived
!=
null
)
{
OnMessageReceived
(
this
,
args
);
}
Console
.
WriteLine
(
"
*********收到数据[{0}]*********\r\n{1}\r\n*******END********
"
,
args
.
IP
,
System
.
Text
.
Encoding
.
UTF8
.
GetString
(
args
.
Data
));
Console
.
WriteLine
(
"
{1}
"
,
args
.
IP
,
System
.
Text
.
Encoding
.
UTF8
.
GetString
(
args
.
Data
));
}
/// <summary>
/// 包解析
...
...
@@ -346,6 +356,7 @@ namespace Mozi.SSDP
/// <summary>
/// 发送查询消息
/// </summary>
/// <param name="pk"></param>
public
void
Search
(
SearchPackage
pk
)
{
HttpRequest
request
=
new
HttpRequest
();
...
...
@@ -354,7 +365,23 @@ namespace Mozi.SSDP
byte
[]
data
=
request
.
GetBuffer
();
_socket
.
SocketMain
.
SendTo
(
data
,
_remoteEP
);
}
/// <summary>
/// 查找设备简化方法,参看<see cref="Search(SearchPackage)"/>
/// </summary>
/// <param name="desc"></param>
public
void
Search
(
TargetDesc
desc
)
{
SearchPackage
pk
=
new
SearchPackage
();
pk
.
MX
=
1
;
pk
.
UserAgent
=
_server
;
pk
.
ST
=
desc
;
HttpRequest
request
=
new
HttpRequest
();
request
.
SetPath
(
"*"
).
SetMethod
(
RequestMethodUPnP
.
MSEARCH
);
request
.
SetHeaders
(
pk
.
GetHeaders
());
byte
[]
data
=
request
.
GetBuffer
();
_socket
.
SocketMain
.
SendTo
(
data
,
_remoteEP
);
}
//NOTIFY * HTTP/1.1
//HOST: 239.255.255.250:1900
//CACHE-CONTROL: max-age = {seconds}
...
...
@@ -412,6 +439,10 @@ namespace Mozi.SSDP
byte
[]
data
=
request
.
GetBuffer
();
_socket
.
SocketMain
.
SendTo
(
data
,
_remoteEP
);
}
/// <summary>
/// update信息
/// </summary>
/// <param name="pk"></param>
public
void
NotifyUpdate
(
UpdatePackage
pk
)
{
HttpRequest
request
=
new
HttpRequest
();
...
...
@@ -443,6 +474,7 @@ namespace Mozi.SSDP
/// <summary>
/// 响应 MS-SEARCH 查找
/// </summary>
/// <param name="pk"></param>
public
void
EchoSearch
(
SearchResponsePackage
pk
)
{
HttpResponse
resp
=
new
HttpResponse
();
...
...
@@ -466,6 +498,10 @@ namespace Mozi.SSDP
// </u:actionName>
// </s:Body>
//</s:Envelope>
/// <summary>
/// 控制信息
/// </summary>
/// <param name="pk"></param>
internal
void
ControlAction
(
ControlActionPackage
pk
)
{
HttpRequest
request
=
new
HttpRequest
();
...
...
@@ -523,7 +559,10 @@ namespace Mozi.SSDP
//</e:property>
//Other variable names and values(if any) go here.
//</e:propertyset>
/// <summary>
/// 订阅
/// </summary>
/// <param name="pk"></param>
internal
void
Subscribe
(
SubscribePackage
pk
)
{
HttpRequest
request
=
new
HttpRequest
();
...
...
@@ -536,7 +575,10 @@ namespace Mozi.SSDP
//UNSUBSCRIBE publisher path HTTP/1.1
//HOST: publisher host:publisher port
//SID: uuid:subscription UUID
/// <summary>
/// 取消订阅
/// </summary>
/// <param name="pk"></param>
internal
void
UnSubscribe
(
SubscribePackage
pk
)
{
HttpRequest
request
=
new
HttpRequest
();
...
...
@@ -757,7 +799,11 @@ namespace Mozi.SSDP
}
return
result
;
}
/// <summary>
/// 包解析
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public
static
USNDesc
Parse
(
string
data
)
{
//uuid:device-UUID::urn:domain-name:service:serviceType:v
...
...
README.md
浏览文件 @
597bc873
...
...
@@ -2,7 +2,7 @@
## 项目介绍
Mozi.HttpEmbedded是一个基于.Net构建的嵌入式
Web
服务器,为.Net App提供web服务功能。
Mozi.HttpEmbedded是一个基于.Net构建的嵌入式
HTTP
服务器,为.Net App提供web服务功能。
> 嵌入式的目标不是单片机,而是.Net应用程序。
> 此项目并不会实现非常丰富的大型Web服务器功能
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录