论坛
BBS
空间测绘
发表
发布文章
提问答疑
搜索
您还未登录
登录后即可体验更多功能
立即登录
我的收藏
提问答疑
我要投稿
IOT
[24583] 2016-01-04_自己动手开发一个Web服务器(二)
文档创建者:
s7ckTeam
浏览次数:
3
最后更新:
2025-01-18
IOT
3 人阅读
|
0 人回复
s7ckTeam
s7ckTeam
当前离线
积分
-54
6万
主题
-6万
回帖
-54
积分
管理员
积分
-54
发消息
2016-01-04_自己动手开发一个Web服务器(二)
来
源
:
编
程
派
参
考
原
文
:
h
t
t
p
:
/
/
r
u
s
l
a
n
s
p
i
v
a
k
.
c
o
m
/
l
s
b
a
w
s
-
p
a
r
t
2
/
作
者
:
R
u
s
l
a
n
编
译
文
章
:
h
t
t
p
:
/
/
c
o
d
i
n
g
p
y
.
c
o
m
/
a
r
t
i
c
l
e
/
b
u
i
l
d
-
a
-
s
i
m
p
l
e
-
w
e
b
-
s
e
r
v
e
r
-
p
a
r
t
-
t
w
o
/
自
己
动
手
开
发
一
个
W
e
b
服
务
器
(
二
)
L
i
n
u
x
中
国
2
0
1
6
-
0
1
-
0
4
在
《
自
己
动
手
开
发
一
个
W
e
b
服
务
器
(
一
)
》
中
,
我
给
大
家
留
了
一
个
问
题
:
如
何
在
不
对
服
务
器
代
码
作
任
何
修
改
的
情
况
下
,
通
过
该
服
务
器
运
行
D
j
a
n
d
o
应
用
、
F
l
a
s
k
应
用
和
P
y
r
a
m
i
d
应
用
,
同
时
满
足
这
些
不
同
网
络
框
架
的
要
求
?
读
完
这
篇
文
章
,
你
就
可
以
回
答
这
个
问
题
了
。
以
前
,
你
选
择
的
P
y
t
h
o
n
网
络
框
架
将
会
限
制
所
能
够
使
用
的
W
e
b
服
务
器
,
反
之
亦
然
。
如
果
框
架
和
服
务
器
在
设
计
时
就
是
可
以
相
互
匹
配
的
,
那
你
就
不
会
面
临
这
个
问
题
:
服
务
器
与
框
架
是
否
匹
配
但
是
如
果
你
试
图
将
设
计
不
相
匹
配
的
服
务
器
与
框
架
相
结
合
,
那
么
你
肯
定
就
会
碰
到
下
面
这
张
图
所
展
示
的
这
个
问
题
:
服
务
器
与
框
架
之
间
冲
突
这
就
意
味
着
,
你
基
本
上
只
能
使
用
能
够
正
常
运
行
的
服
务
器
与
框
架
组
合
,
而
不
能
选
择
你
希
望
使
用
的
服
务
器
或
框
架
。
那
么
,
你
怎
样
确
保
可
以
在
不
修
改
W
e
b
服
务
器
代
码
或
网
络
框
架
代
码
的
前
提
下
,
使
用
自
己
选
择
的
服
务
器
,
并
且
匹
配
多
个
不
同
的
网
络
框
架
呢
?
为
了
解
决
这
个
问
题
,
就
出
现
了
P
y
t
h
o
n
W
e
b
S
e
r
v
e
r
G
a
t
e
w
a
y
I
n
t
e
r
f
a
c
e
,
W
S
G
I
W
e
b
服
务
器
网
关
接
口
。
W
S
G
I
接
口
W
S
G
I
的
出
现
,
让
开
发
者
可
以
将
网
络
框
架
与
W
e
b
服
务
器
的
选
择
分
隔
开
来
,
不
再
相
互
限
制
。
现
在
,
你
可
以
真
正
地
将
不
同
的
W
e
b
服
务
器
与
网
络
开
发
框
架
进
行
混
合
搭
配
,
选
择
满
足
自
己
需
求
的
组
合
。
例
如
,
你
可
以
使
用
G
u
n
i
c
o
r
n
或
N
g
i
n
x
/
u
W
S
G
I
或
W
a
i
t
r
e
s
s
服
务
器
来
运
行
D
j
a
n
g
o
、
F
l
a
s
k
或
P
y
r
a
m
i
d
应
用
。
正
是
由
于
服
务
器
和
框
架
均
支
持
W
S
G
I
,
才
真
正
得
以
实
现
二
者
之
间
的
自
由
混
合
搭
配
。
所
以
,
W
S
G
I
就
是
我
在
上
一
篇
文
章
中
所
留
问
题
的
答
案
。
你
的
W
e
b
服
务
器
必
须
实
现
一
个
服
务
器
端
的
W
S
G
I
接
口
,
而
目
前
所
有
现
代
P
y
t
h
o
n
网
络
框
架
都
已
经
实
现
了
框
架
端
的
W
S
G
I
接
口
,
这
样
开
发
者
不
需
要
修
改
服
务
器
的
代
码
,
就
可
以
支
持
某
个
网
络
框
架
。
W
e
b
服
务
器
和
网
络
框
架
支
持
W
S
G
I
协
议
,
不
仅
让
应
用
开
发
者
选
择
符
合
自
己
需
求
的
组
合
,
同
时
也
有
利
于
服
务
器
和
框
架
的
开
发
者
,
因
为
他
们
可
以
将
注
意
力
集
中
在
自
己
擅
长
的
领
域
,
而
不
是
相
互
倾
轧
。
其
他
编
程
语
言
也
拥
有
类
似
的
接
口
:
例
如
J
a
v
a
的
S
e
r
v
l
e
t
A
P
I
和
R
u
b
y
的
R
a
c
k
。
口
说
无
凭
,
我
猜
你
肯
定
在
想
:
“
无
代
码
无
真
相
!
”
既
然
如
此
,
我
就
在
这
里
给
出
一
个
非
常
简
单
的
W
S
G
I
服
务
器
实
现
:
#
T
e
s
t
e
d
w
i
t
h
P
y
t
h
o
n
2
.
7
.
9
,
L
i
n
u
x
&
M
a
c
O
S
X
i
m
p
o
r
t
s
o
c
k
e
t
i
m
p
o
r
t
S
t
r
i
n
g
I
O
i
m
p
o
r
t
s
y
s
c
l
a
s
s
W
S
G
I
S
e
r
v
e
r
(
o
b
j
e
c
t
)
:
a
d
d
r
e
s
s
_
f
a
m
i
l
y
=
s
o
c
k
e
t
.
A
F
_
I
N
E
T
s
o
c
k
e
t
_
t
y
p
e
=
s
o
c
k
e
t
.
S
O
C
K
_
S
T
R
E
A
M
r
e
q
u
e
s
t
_
q
u
e
u
e
_
s
i
z
e
=
1
d
e
f
_
_
i
n
i
t
_
_
(
s
e
l
f
,
s
e
r
v
e
r
_
a
d
d
r
e
s
s
)
:
#
C
r
e
a
t
e
a
l
i
s
t
e
n
i
n
g
s
o
c
k
e
t
s
e
l
f
.
l
i
s
t
e
n
_
s
o
c
k
e
t
=
l
i
s
t
e
n
_
s
o
c
k
e
t
=
s
o
c
k
e
t
.
s
o
c
k
e
t
(
s
e
l
f
.
a
d
d
r
e
s
s
_
f
a
m
i
l
y
,
s
e
l
f
.
s
o
c
k
e
t
_
t
y
p
e
)
#
A
l
l
o
w
t
o
r
e
u
s
e
t
h
e
s
a
m
e
a
d
d
r
e
s
s
l
i
s
t
e
n
_
s
o
c
k
e
t
.
s
e
t
s
o
c
k
o
p
t
(
s
o
c
k
e
t
.
S
O
L
_
S
O
C
K
E
T
,
s
o
c
k
e
t
.
S
O
_
R
E
U
S
E
A
D
D
R
,
1
)
#
B
i
n
d
l
i
s
t
e
n
_
s
o
c
k
e
t
.
b
i
n
d
(
s
e
r
v
e
r
_
a
d
d
r
e
s
s
)
#
A
c
t
i
v
a
t
e
l
i
s
t
e
n
_
s
o
c
k
e
t
.
l
i
s
t
e
n
(
s
e
l
f
.
r
e
q
u
e
s
t
_
q
u
e
u
e
_
s
i
z
e
)
#
G
e
t
s
e
r
v
e
r
h
o
s
t
n
a
m
e
a
n
d
p
o
r
t
h
o
s
t
,
p
o
r
t
=
s
e
l
f
.
l
i
s
t
e
n
_
s
o
c
k
e
t
.
g
e
t
s
o
c
k
n
a
m
e
(
)
[
:
2
]
s
e
l
f
.
s
e
r
v
e
r
_
n
a
m
e
=
s
o
c
k
e
t
.
g
e
t
f
q
d
n
(
h
o
s
t
)
s
e
l
f
.
s
e
r
v
e
r
_
p
o
r
t
=
p
o
r
t
#
R
e
t
u
r
n
h
e
a
d
e
r
s
s
e
t
b
y
W
e
b
f
r
a
m
e
w
o
r
k
/
W
e
b
a
p
p
l
i
c
a
t
i
o
n
s
e
l
f
.
h
e
a
d
e
r
s
_
s
e
t
=
[
]
d
e
f
s
e
t
_
a
p
p
(
s
e
l
f
,
a
p
p
l
i
c
a
t
i
o
n
)
:
s
e
l
f
.
a
p
p
l
i
c
a
t
i
o
n
=
a
p
p
l
i
c
a
t
i
o
n
d
e
f
s
e
r
v
e
_
f
o
r
e
v
e
r
(
s
e
l
f
)
:
l
i
s
t
e
n
_
s
o
c
k
e
t
=
s
e
l
f
.
l
i
s
t
e
n
_
s
o
c
k
e
t
w
h
i
l
e
T
r
u
e
:
#
N
e
w
c
l
i
e
n
t
c
o
n
n
e
c
t
i
o
n
s
e
l
f
.
c
l
i
e
n
t
_
c
o
n
n
e
c
t
i
o
n
,
c
l
i
e
n
t
_
a
d
d
r
e
s
s
=
l
i
s
t
e
n
_
s
o
c
k
e
t
.
a
c
c
e
p
t
(
)
#
H
a
n
d
l
e
o
n
e
r
e
q
u
e
s
t
a
n
d
c
l
o
s
e
t
h
e
c
l
i
e
n
t
c
o
n
n
e
c
t
i
o
n
.
T
h
e
n
#
l
o
o
p
o
v
e
r
t
o
w
a
i
t
f
o
r
a
n
o
t
h
e
r
c
l
i
e
n
t
c
o
n
n
e
c
t
i
o
n
s
e
l
f
.
h
a
n
d
l
e
_
o
n
e
_
r
e
q
u
e
s
t
(
)
d
e
f
h
a
n
d
l
e
_
o
n
e
_
r
e
q
u
e
s
t
(
s
e
l
f
)
:
s
e
l
f
.
r
e
q
u
e
s
t
_
d
a
t
a
=
r
e
q
u
e
s
t
_
d
a
t
a
=
s
e
l
f
.
c
l
i
e
n
t
_
c
o
n
n
e
c
t
i
o
n
.
r
e
c
v
(
1
0
2
4
)
#
P
r
i
n
t
f
o
r
m
a
t
t
e
d
r
e
q
u
e
s
t
d
a
t
a
a
l
a
'
c
u
r
l
-
v
'
p
r
i
n
t
(
'
'
.
j
o
i
n
(
'
<
{
l
i
n
e
}
n
'
.
f
o
r
m
a
t
(
l
i
n
e
=
l
i
n
e
)
f
o
r
l
i
n
e
i
n
r
e
q
u
e
s
t
_
d
a
t
a
.
s
p
l
i
t
l
i
n
e
s
(
)
)
)
s
e
l
f
.
p
a
r
s
e
_
r
e
q
u
e
s
t
(
r
e
q
u
e
s
t
_
d
a
t
a
)
#
C
o
n
s
t
r
u
c
t
e
n
v
i
r
o
n
m
e
n
t
d
i
c
t
i
o
n
a
r
y
u
s
i
n
g
r
e
q
u
e
s
t
d
a
t
a
e
n
v
=
s
e
l
f
.
g
e
t
_
e
n
v
i
r
o
n
(
)
#
I
t
'
s
t
i
m
e
t
o
c
a
l
l
o
u
r
a
p
p
l
i
c
a
t
i
o
n
c
a
l
l
a
b
l
e
a
n
d
g
e
t
#
b
a
c
k
a
r
e
s
u
l
t
t
h
a
t
w
i
l
l
b
e
c
o
m
e
H
T
T
P
r
e
s
p
o
n
s
e
b
o
d
y
r
e
s
u
l
t
=
s
e
l
f
.
a
p
p
l
i
c
a
t
i
o
n
(
e
n
v
,
s
e
l
f
.
s
t
a
r
t
_
r
e
s
p
o
n
s
e
)
#
C
o
n
s
t
r
u
c
t
a
r
e
s
p
o
n
s
e
a
n
d
s
e
n
d
i
t
b
a
c
k
t
o
t
h
e
c
l
i
e
n
t
s
e
l
f
.
f
i
n
i
s
h
_
r
e
s
p
o
n
s
e
(
r
e
s
u
l
t
)
d
e
f
p
a
r
s
e
_
r
e
q
u
e
s
t
(
s
e
l
f
,
t
e
x
t
)
:
r
e
q
u
e
s
t
_
l
i
n
e
=
t
e
x
t
.
s
p
l
i
t
l
i
n
e
s
(
)
[
0
]
r
e
q
u
e
s
t
_
l
i
n
e
=
r
e
q
u
e
s
t
_
l
i
n
e
.
r
s
t
r
i
p
(
'
r
n
'
)
#
B
r
e
a
k
d
o
w
n
t
h
e
r
e
q
u
e
s
t
l
i
n
e
i
n
t
o
c
o
m
p
o
n
e
n
t
s
(
s
e
l
f
.
r
e
q
u
e
s
t
_
m
e
t
h
o
d
,
#
G
E
T
s
e
l
f
.
p
a
t
h
,
#
/
h
e
l
l
o
s
e
l
f
.
r
e
q
u
e
s
t
_
v
e
r
s
i
o
n
#
H
T
T
P
/
1
.
1
)
=
r
e
q
u
e
s
t
_
l
i
n
e
.
s
p
l
i
t
(
)
d
e
f
g
e
t
_
e
n
v
i
r
o
n
(
s
e
l
f
)
:
e
n
v
=
{
}
#
T
h
e
f
o
l
l
o
w
i
n
g
c
o
d
e
s
n
i
p
p
e
t
d
o
e
s
n
o
t
f
o
l
l
o
w
P
E
P
8
c
o
n
v
e
n
t
i
o
n
s
#
b
u
t
i
t
'
s
f
o
r
m
a
t
t
e
d
t
h
e
w
a
y
i
t
i
s
f
o
r
d
e
m
o
n
s
t
r
a
t
i
o
n
p
u
r
p
o
s
e
s
#
t
o
e
m
p
h
a
s
i
z
e
t
h
e
r
e
q
u
i
r
e
d
v
a
r
i
a
b
l
e
s
a
n
d
t
h
e
i
r
v
a
l
u
e
s
#
#
R
e
q
u
i
r
e
d
W
S
G
I
v
a
r
i
a
b
l
e
s
e
n
v
[
'
w
s
g
i
.
v
e
r
s
i
o
n
'
]
=
(
1
,
0
)
e
n
v
[
'
w
s
g
i
.
u
r
l
_
s
c
h
e
m
e
'
]
=
'
h
t
t
p
'
e
n
v
[
'
w
s
g
i
.
i
n
p
u
t
'
]
=
S
t
r
i
n
g
I
O
.
S
t
r
i
n
g
I
O
(
s
e
l
f
.
r
e
q
u
e
s
t
_
d
a
t
a
)
e
n
v
[
'
w
s
g
i
.
e
r
r
o
r
s
'
]
=
s
y
s
.
s
t
d
e
r
r
e
n
v
[
'
w
s
g
i
.
m
u
l
t
i
t
h
r
e
a
d
'
]
=
F
a
l
s
e
e
n
v
[
'
w
s
g
i
.
m
u
l
t
i
p
r
o
c
e
s
s
'
]
=
F
a
l
s
e
e
n
v
[
'
w
s
g
i
.
r
u
n
_
o
n
c
e
'
]
=
F
a
l
s
e
#
R
e
q
u
i
r
e
d
C
G
I
v
a
r
i
a
b
l
e
s
e
n
v
[
'
R
E
Q
U
E
S
T
_
M
E
T
H
O
D
'
]
=
s
e
l
f
.
r
e
q
u
e
s
t
_
m
e
t
h
o
d
#
G
E
T
e
n
v
[
'
P
A
T
H
_
I
N
F
O
'
]
=
s
e
l
f
.
p
a
t
h
#
/
h
e
l
l
o
e
n
v
[
'
S
E
R
V
E
R
_
N
A
M
E
'
]
=
s
e
l
f
.
s
e
r
v
e
r
_
n
a
m
e
#
l
o
c
a
l
h
o
s
t
e
n
v
[
'
S
E
R
V
E
R
_
P
O
R
T
'
]
=
s
t
r
(
s
e
l
f
.
s
e
r
v
e
r
_
p
o
r
t
)
#
8
8
8
8
r
e
t
u
r
n
e
n
v
d
e
f
s
t
a
r
t
_
r
e
s
p
o
n
s
e
(
s
e
l
f
,
s
t
a
t
u
s
,
r
e
s
p
o
n
s
e
_
h
e
a
d
e
r
s
,
e
x
c
_
i
n
f
o
=
N
o
n
e
)
:
#
A
d
d
n
e
c
e
s
s
a
r
y
s
e
r
v
e
r
h
e
a
d
e
r
s
s
e
r
v
e
r
_
h
e
a
d
e
r
s
=
[
(
'
D
a
t
e
'
,
'
T
u
e
,
3
1
M
a
r
2
0
1
5
1
2
:
5
4
:
4
8
G
M
T
'
)
,
(
'
S
e
r
v
e
r
'
,
'
W
S
G
I
S
e
r
v
e
r
0
.
2
'
)
,
]
s
e
l
f
.
h
e
a
d
e
r
s
_
s
e
t
=
[
s
t
a
t
u
s
,
r
e
s
p
o
n
s
e
_
h
e
a
d
e
r
s
+
s
e
r
v
e
r
_
h
e
a
d
e
r
s
]
#
T
o
a
d
h
e
r
e
t
o
W
S
G
I
s
p
e
c
i
f
i
c
a
t
i
o
n
t
h
e
s
t
a
r
t
_
r
e
s
p
o
n
s
e
m
u
s
t
r
e
t
u
r
n
#
a
'
w
r
i
t
e
'
c
a
l
l
a
b
l
e
.
W
e
s
i
m
p
l
i
c
i
t
y
'
s
s
a
k
e
w
e
'
l
l
i
g
n
o
r
e
t
h
a
t
d
e
t
a
i
l
#
f
o
r
n
o
w
.
#
r
e
t
u
r
n
s
e
l
f
.
f
i
n
i
s
h
_
r
e
s
p
o
n
s
e
d
e
f
f
i
n
i
s
h
_
r
e
s
p
o
n
s
e
(
s
e
l
f
,
r
e
s
u
l
t
)
:
t
r
y
:
s
t
a
t
u
s
,
r
e
s
p
o
n
s
e
_
h
e
a
d
e
r
s
=
s
e
l
f
.
h
e
a
d
e
r
s
_
s
e
t
r
e
s
p
o
n
s
e
=
'
H
T
T
P
/
1
.
1
{
s
t
a
t
u
s
}
r
n
'
.
f
o
r
m
a
t
(
s
t
a
t
u
s
=
s
t
a
t
u
s
)
f
o
r
h
e
a
d
e
r
i
n
r
e
s
p
o
n
s
e
_
h
e
a
d
e
r
s
:
r
e
s
p
o
n
s
e
+
=
'
{
0
}
:
{
1
}
r
n
'
.
f
o
r
m
a
t
(
*
h
e
a
d
e
r
)
r
e
s
p
o
n
s
e
+
=
'
r
n
'
f
o
r
d
a
t
a
i
n
r
e
s
u
l
t
:
r
e
s
p
o
n
s
e
+
=
d
a
t
a
#
P
r
i
n
t
f
o
r
m
a
t
t
e
d
r
e
s
p
o
n
s
e
d
a
t
a
a
l
a
'
c
u
r
l
-
v
'
p
r
i
n
t
(
'
'
.
j
o
i
n
(
'
>
{
l
i
n
e
}
n
'
.
f
o
r
m
a
t
(
l
i
n
e
=
l
i
n
e
)
f
o
r
l
i
n
e
i
n
r
e
s
p
o
n
s
e
.
s
p
l
i
t
l
i
n
e
s
(
)
)
)
s
e
l
f
.
c
l
i
e
n
t
_
c
o
n
n
e
c
t
i
o
n
.
s
e
n
d
a
l
l
(
r
e
s
p
o
n
s
e
)
f
i
n
a
l
l
y
:
s
e
l
f
.
c
l
i
e
n
t
_
c
o
n
n
e
c
t
i
o
n
.
c
l
o
s
e
(
)
S
E
R
V
E
R
_
A
D
D
R
E
S
S
=
(
H
O
S
T
,
P
O
R
T
)
=
'
'
,
8
8
8
8
d
e
f
m
a
k
e
_
s
e
r
v
e
r
(
s
e
r
v
e
r
_
a
d
d
r
e
s
s
,
a
p
p
l
i
c
a
t
i
o
n
)
:
s
e
r
v
e
r
=
W
S
G
I
S
e
r
v
e
r
(
s
e
r
v
e
r
_
a
d
d
r
e
s
s
)
s
e
r
v
e
r
.
s
e
t
_
a
p
p
(
a
p
p
l
i
c
a
t
i
o
n
)
r
e
t
u
r
n
s
e
r
v
e
r
i
f
_
_
n
a
m
e
_
_
=
=
'
_
_
m
a
i
n
_
_
'
:
i
f
l
e
n
(
s
y
s
.
a
r
g
v
)
<
2
:
s
y
s
.
e
x
i
t
(
'
P
r
o
v
i
d
e
a
W
S
G
I
a
p
p
l
i
c
a
t
i
o
n
o
b
j
e
c
t
a
s
m
o
d
u
l
e
:
c
a
l
l
a
b
l
e
'
)
a
p
p
_
p
a
t
h
=
s
y
s
.
a
r
g
v
[
1
]
m
o
d
u
l
e
,
a
p
p
l
i
c
a
t
i
o
n
=
a
p
p
_
p
a
t
h
.
s
p
l
i
t
(
'
:
'
)
m
o
d
u
l
e
=
_
_
i
m
p
o
r
t
_
_
(
m
o
d
u
l
e
)
a
p
p
l
i
c
a
t
i
o
n
=
g
e
t
a
t
t
r
(
m
o
d
u
l
e
,
a
p
p
l
i
c
a
t
i
o
n
)
h
t
t
p
d
=
m
a
k
e
_
s
e
r
v
e
r
(
S
E
R
V
E
R
_
A
D
D
R
E
S
S
,
a
p
p
l
i
c
a
t
i
o
n
)
p
r
i
n
t
(
'
W
S
G
I
S
e
r
v
e
r
:
S
e
r
v
i
n
g
H
T
T
P
o
n
p
o
r
t
{
p
o
r
t
}
.
.
.
n
'
.
f
o
r
m
a
t
(
p
o
r
t
=
P
O
R
T
)
)
h
t
t
p
d
.
s
e
r
v
e
_
f
o
r
e
v
e
r
(
)
上
面
的
代
码
比
第
一
部
分
的
服
务
器
实
现
代
码
要
长
的
多
,
但
是
这
些
代
码
实
际
也
不
算
太
长
,
只
有
不
到
1
5
0
行
,
大
家
理
解
起
来
并
不
会
太
困
难
。
上
面
这
个
服
务
器
的
功
能
也
更
多
—
—
它
可
以
运
行
你
使
用
自
己
喜
欢
的
框
架
所
写
出
来
的
网
络
应
用
,
无
论
你
选
择
P
y
r
a
m
i
d
、
F
l
a
s
k
、
D
j
a
n
g
o
或
是
其
他
支
持
W
S
G
I
协
议
的
框
架
。
你
不
信
?
你
可
以
自
己
测
试
一
下
,
看
看
结
果
如
何
。
将
上
述
代
码
保
存
为
,
或
者
直
接
从
我
的
G
i
t
h
u
b
仓
库
下
载
。
如
果
你
运
行
该
文
件
时
没
有
提
供
任
何
参
数
,
那
么
程
序
就
会
报
错
并
退
出
。
上
述
程
序
设
计
的
目
的
,
就
是
运
行
你
开
发
的
网
络
应
用
,
但
是
你
还
需
要
满
足
一
些
它
的
要
求
。
要
运
行
服
务
器
,
你
只
需
要
安
装
P
y
t
h
o
n
即
可
。
但
是
要
运
行
使
用
P
y
r
a
m
i
d
、
F
l
a
s
k
和
D
j
a
n
g
o
等
框
架
开
发
的
网
络
应
用
,
你
还
需
要
先
安
装
这
些
框
架
。
我
们
接
下
来
安
装
这
三
种
框
架
。
我
倾
向
于
使
用
安
装
。
请
按
照
下
面
的
提
示
创
建
并
激
活
一
个
虚
拟
环
境
,
然
后
安
装
这
三
个
网
络
框
架
。
接
下
来
,
你
需
要
创
建
一
个
网
络
应
用
。
我
们
首
先
创
建
P
y
r
a
m
i
d
应
用
。
将
下
面
的
代
码
保
存
为
文
件
,
放
至
所
在
的
文
件
夹
中
,
或
者
直
接
从
我
的
G
i
t
h
u
b
仓
库
下
载
该
文
件
:
w
e
b
s
e
r
v
e
r
2
.
p
y
$
p
y
t
h
o
n
w
e
b
s
e
r
v
e
r
2
.
p
y
P
r
o
v
i
d
e
a
W
S
G
I
a
p
p
l
i
c
a
t
i
o
n
o
b
j
e
c
t
a
s
m
o
d
u
l
e
:
c
a
l
l
a
b
l
e
v
i
r
t
u
a
l
e
n
v
$
[
s
u
d
o
]
p
i
p
i
n
s
t
a
l
l
v
i
r
t
u
a
l
e
n
v
$
m
k
d
i
r
~
/
e
n
v
s
$
v
i
r
t
u
a
l
e
n
v
~
/
e
n
v
s
/
l
s
b
a
w
s
/
$
c
d
~
/
e
n
v
s
/
l
s
b
a
w
s
/
$
l
s
b
i
n
i
n
c
l
u
d
e
l
i
b
$
s
o
u
r
c
e
b
i
n
/
a
c
t
i
v
a
t
e
(
l
s
b
a
w
s
)
$
p
i
p
i
n
s
t
a
l
l
p
y
r
a
m
i
d
(
l
s
b
a
w
s
)
$
p
i
p
i
n
s
t
a
l
l
f
l
a
s
k
(
l
s
b
a
w
s
)
$
p
i
p
i
n
s
t
a
l
l
d
j
a
n
g
o
p
y
r
a
m
i
d
a
p
p
.
p
y
w
e
b
s
e
r
v
e
r
2
.
p
y
f
r
o
m
p
y
r
a
m
i
d
.
c
o
n
f
i
g
i
m
p
o
r
t
C
o
n
f
i
g
u
r
a
t
o
r
f
r
o
m
p
y
r
a
m
i
d
.
r
e
s
p
o
n
s
e
i
m
p
o
r
t
R
e
s
p
o
n
s
e
d
e
f
h
e
l
l
o
_
w
o
r
l
d
(
r
e
q
u
e
s
t
)
:
r
e
t
u
r
n
R
e
s
p
o
n
s
e
(
'
H
e
l
l
o
w
o
r
l
d
f
r
o
m
P
y
r
a
m
i
d
!
n
'
,
c
o
n
t
e
n
t
_
t
y
p
e
=
'
t
e
x
t
/
p
l
a
i
n
'
,
)
c
o
n
f
i
g
=
C
o
n
f
i
g
u
r
a
t
o
r
(
)
现
在
,
你
可
以
通
过
自
己
开
发
的
W
e
b
服
务
器
来
启
动
上
面
的
P
y
r
a
m
i
d
应
用
。
在
运
行
时
,
你
告
诉
自
己
的
服
务
器
去
加
载
模
块
中
的
可
调
用
对
象
(
c
a
l
l
a
b
l
e
)
。
你
的
服
务
器
现
在
可
以
接
收
H
T
T
P
请
求
,
并
将
请
求
中
转
至
你
的
P
y
r
a
m
i
d
应
用
。
应
用
目
前
只
能
处
理
一
个
路
由
(
r
o
u
t
e
)
:
/
h
e
l
l
o
。
在
浏
览
器
的
地
址
栏
输
入
,
按
下
回
车
键
,
观
察
会
出
现
什
么
情
况
:
P
y
r
a
m
i
d
应
用
运
行
情
况
你
还
可
以
在
命
令
行
使
用
命
令
,
来
测
试
服
务
器
运
行
情
况
:
接
下
来
我
们
创
建
F
l
a
s
k
应
用
。
重
复
上
面
的
步
骤
。
c
o
n
f
i
g
.
a
d
d
_
r
o
u
t
e
(
'
h
e
l
l
o
'
,
'
/
h
e
l
l
o
'
)
c
o
n
f
i
g
.
a
d
d
_
v
i
e
w
(
h
e
l
l
o
_
w
o
r
l
d
,
r
o
u
t
e
_
n
a
m
e
=
'
h
e
l
l
o
'
)
a
p
p
=
c
o
n
f
i
g
.
m
a
k
e
_
w
s
g
i
_
a
p
p
(
)
(
l
s
b
a
w
s
)
$
p
y
t
h
o
n
w
e
b
s
e
r
v
e
r
2
.
p
y
p
y
r
a
m
i
d
a
p
p
:
a
p
p
W
S
G
I
S
e
r
v
e
r
:
S
e
r
v
i
n
g
H
T
T
P
o
n
p
o
r
t
8
8
8
8
.
.
.
w
e
b
s
e
r
v
e
r
2
.
p
y
p
y
r
a
m
i
d
a
p
p
a
p
p
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
8
8
8
8
/
h
e
l
l
o
c
u
r
l
$
c
u
r
l
-
v
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
8
8
8
8
/
h
e
l
l
o
.
.
.
f
r
o
m
f
l
a
s
k
i
m
p
o
r
t
F
l
a
s
k
f
r
o
m
f
l
a
s
k
i
m
p
o
r
t
R
e
s
p
o
n
s
e
f
l
a
s
k
_
a
p
p
=
F
l
a
s
k
(
'
f
l
a
s
k
a
p
p
'
)
@
f
l
a
s
k
_
a
p
p
.
r
o
u
t
e
(
'
/
h
e
l
l
o
'
)
将
上
面
的
代
码
保
存
为
,
或
者
直
接
从
我
的
G
i
t
h
u
b
仓
库
下
载
文
件
,
并
运
行
:
然
后
在
浏
览
器
地
址
栏
输
入
,
并
按
下
回
车
:
F
l
a
s
k
应
用
运
行
情
况
同
样
,
在
命
令
行
使
用
命
令
,
看
看
服
务
器
是
否
会
返
回
F
l
a
s
k
应
用
生
成
的
信
息
:
这
个
服
务
器
是
不
是
也
能
支
持
D
j
a
n
g
o
应
用
?
试
一
试
就
知
道
了
!
不
过
接
下
来
的
操
作
更
为
复
杂
一
些
,
我
建
议
大
家
克
隆
整
个
仓
库
,
并
使
用
其
中
的
文
件
。
下
面
的
代
码
将
一
个
名
叫
的
D
j
a
n
g
o
应
用
添
加
至
当
前
的
P
y
t
h
o
n
路
径
中
,
然
后
导
入
了
该
项
目
的
W
S
G
I
应
用
。
d
e
f
h
e
l
l
o
_
w
o
r
l
d
(
)
:
r
e
t
u
r
n
R
e
s
p
o
n
s
e
(
'
H
e
l
l
o
w
o
r
l
d
f
r
o
m
F
l
a
s
k
!
n
'
,
m
i
m
e
t
y
p
e
=
'
t
e
x
t
/
p
l
a
i
n
'
)
a
p
p
=
f
l
a
s
k
_
a
p
p
.
w
s
g
i
_
a
p
p
f
l
a
s
k
a
p
p
.
p
y
(
l
s
b
a
w
s
)
$
p
y
t
h
o
n
w
e
b
s
e
r
v
e
r
2
.
p
y
f
l
a
s
k
a
p
p
:
a
p
p
W
S
G
I
S
e
r
v
e
r
:
S
e
r
v
i
n
g
H
T
T
P
o
n
p
o
r
t
8
8
8
8
.
.
.
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
8
8
8
8
/
h
e
l
l
o
c
u
r
l
$
c
u
r
l
-
v
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
8
8
8
8
/
h
e
l
l
o
.
.
.
d
j
a
n
g
o
a
p
p
.
p
y
h
e
l
l
o
w
o
r
l
d
i
m
p
o
r
t
s
y
s
s
y
s
.
p
a
t
h
.
i
n
s
e
r
t
(
0
,
'
.
/
h
e
l
l
o
w
o
r
l
d
'
)
将
上
面
的
代
码
保
存
为
,
并
使
用
你
开
发
的
服
务
器
运
行
这
个
D
j
a
n
g
o
应
用
。
同
样
,
在
浏
览
器
中
输
入
,
并
按
下
回
车
键
:
D
j
a
n
g
o
应
用
的
运
行
情
况
接
下
来
,
和
前
面
几
次
一
样
,
你
通
过
命
令
行
使
用
命
令
进
行
测
试
,
确
认
了
这
个
D
j
a
n
d
o
应
用
成
功
处
理
了
你
发
出
的
请
求
:
你
有
没
有
按
照
上
面
的
步
骤
测
试
?
你
做
到
了
让
服
务
器
支
持
全
部
三
种
框
架
吗
?
如
果
没
有
,
请
尽
量
自
己
动
手
操
作
。
阅
读
代
码
很
重
要
,
但
这
系
列
文
章
的
目
的
在
于
重
新
开
发
,
而
这
意
味
着
你
需
要
自
己
亲
自
动
手
。
最
好
是
你
自
己
重
新
输
入
所
有
的
代
码
,
并
确
保
代
码
运
行
结
果
符
合
预
期
。
经
过
上
面
的
介
绍
,
你
应
该
已
经
认
识
到
了
W
S
G
I
的
强
大
之
处
:
它
可
以
让
你
自
由
混
合
搭
配
W
e
b
服
务
器
和
框
架
。
W
S
G
I
为
P
y
t
h
o
n
W
e
b
服
务
器
与
P
y
t
h
o
n
网
络
框
架
之
间
的
交
互
提
供
了
一
个
极
简
的
接
口
,
而
且
非
常
容
易
在
服
务
器
端
和
框
架
端
实
现
。
下
面
的
代
码
段
分
别
展
示
了
服
务
器
端
和
框
架
端
的
W
S
G
I
接
口
:
f
r
o
m
h
e
l
l
o
w
o
r
l
d
i
m
p
o
r
t
w
s
g
i
a
p
p
=
w
s
g
i
.
a
p
p
l
i
c
a
t
i
o
n
d
j
a
n
g
o
a
p
p
.
p
y
(
l
s
b
a
w
s
)
$
p
y
t
h
o
n
w
e
b
s
e
r
v
e
r
2
.
p
y
d
j
a
n
g
o
a
p
p
:
a
p
p
W
S
G
I
S
e
r
v
e
r
:
S
e
r
v
i
n
g
H
T
T
P
o
n
p
o
r
t
8
8
8
8
.
.
.
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
8
8
8
8
/
h
e
l
l
o
c
u
r
l
$
c
u
r
l
-
v
h
t
t
p
:
/
/
l
o
c
a
l
h
o
s
t
:
8
8
8
8
/
h
e
l
l
o
.
.
.
d
e
f
r
u
n
_
a
p
p
l
i
c
a
t
i
o
n
(
a
p
p
l
i
c
a
t
i
o
n
)
:
"
"
"
S
e
r
v
e
r
c
o
d
e
.
"
"
"
#
T
h
i
s
i
s
w
h
e
r
e
a
n
a
p
p
l
i
c
a
t
i
o
n
/
f
r
a
m
e
w
o
r
k
s
t
o
r
e
s
#
a
n
H
T
T
P
s
t
a
t
u
s
a
n
d
H
T
T
P
r
e
s
p
o
n
s
e
h
e
a
d
e
r
s
f
o
r
t
h
e
s
e
r
v
e
r
#
t
o
t
r
a
n
s
m
i
t
t
o
t
h
e
c
l
i
e
n
t
h
e
a
d
e
r
s
_
s
e
t
=
[
]
下
面
给
大
家
解
释
一
下
上
述
代
码
的
工
作
原
理
:
1
.
网
络
框
架
提
供
一
个
命
名
为
的
可
调
用
对
象
(
W
S
G
I
协
议
并
没
有
指
定
如
何
实
现
这
个
对
象
)
。
2
.
服
务
器
每
次
从
H
T
T
P
客
户
端
接
收
请
求
之
后
,
调
用
。
它
会
向
可
调
用
对
象
传
递
一
个
名
叫
的
字
典
作
为
参
数
,
其
中
包
含
了
W
S
G
I
/
C
G
I
的
诸
多
变
量
,
以
及
一
个
名
为
的
可
调
用
对
象
。
3
.
框
架
/
应
用
生
成
H
T
T
P
状
态
码
以
及
H
T
T
P
r
e
s
p
o
n
s
e
h
e
a
d
e
r
s
响
应
报
头
,
然
后
将
二
者
传
递
至
,
等
待
服
务
器
保
存
。
此
外
,
框
架
/
应
用
还
将
返
回
响
应
的
正
文
。
4
.
服
务
器
将
状
态
码
、
响
应
报
头
和
响
应
正
文
组
合
成
H
T
T
P
响
应
,
并
返
回
给
客
户
端
(
这
一
步
并
不
属
于
W
S
G
I
协
议
)
。
下
面
这
张
图
直
观
地
说
明
了
W
S
G
I
接
口
的
情
况
:
#
E
n
v
i
r
o
n
m
e
n
t
d
i
c
t
i
o
n
a
r
y
w
i
t
h
W
S
G
I
/
C
G
I
v
a
r
i
a
b
l
e
s
e
n
v
i
r
o
n
=
{
}
d
e
f
s
t
a
r
t
_
r
e
s
p
o
n
s
e
(
s
t
a
t
u
s
,
r
e
s
p
o
n
s
e
_
h
e
a
d
e
r
s
,
e
x
c
_
i
n
f
o
=
N
o
n
e
)
:
h
e
a
d
e
r
s
_
s
e
t
[
:
]
=
[
s
t
a
t
u
s
,
r
e
s
p
o
n
s
e
_
h
e
a
d
e
r
s
]
#
S
e
r
v
e
r
i
n
v
o
k
e
s
t
h
e
‘
a
p
p
l
i
c
a
t
i
o
n
'
c
a
l
l
a
b
l
e
a
n
d
g
e
t
s
b
a
c
k
t
h
e
#
r
e
s
p
o
n
s
e
b
o
d
y
r
e
s
u
l
t
=
a
p
p
l
i
c
a
t
i
o
n
(
e
n
v
i
r
o
n
,
s
t
a
r
t
_
r
e
s
p
o
n
s
e
)
#
S
e
r
v
e
r
b
u
i
l
d
s
a
n
H
T
T
P
r
e
s
p
o
n
s
e
a
n
d
t
r
a
n
s
m
i
t
s
i
t
t
o
t
h
e
c
l
i
e
n
t
…
d
e
f
a
p
p
(
e
n
v
i
r
o
n
,
s
t
a
r
t
_
r
e
s
p
o
n
s
e
)
:
"
"
"
A
b
a
r
e
b
o
n
e
s
W
S
G
I
a
p
p
.
"
"
"
s
t
a
r
t
_
r
e
s
p
o
n
s
e
(
'
2
0
0
O
K
'
,
[
(
'
C
o
n
t
e
n
t
-
T
y
p
e
'
,
'
t
e
x
t
/
p
l
a
i
n
'
)
]
)
r
e
t
u
r
n
[
'
H
e
l
l
o
w
o
r
l
d
!
'
]
r
u
n
_
a
p
p
l
i
c
a
t
i
o
n
(
a
p
p
)
a
p
p
l
i
c
a
t
i
o
n
a
p
p
l
i
c
a
t
i
o
n
e
n
v
i
r
o
n
s
t
a
r
t
_
r
e
s
p
o
n
s
e
s
t
a
r
t
_
r
e
s
p
o
n
s
e
回复
举报
上一个主题
下一个主题
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
!disable!!post_parseurl!
使用Markdown编辑器编辑
使用富文本编辑器编辑
回帖后跳转到最后一页