Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
51eebe11
Commit
51eebe11
authored
Aug 10, 2017
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
windows下添加telnet的支持
parent
0d03ae6c
全部展开
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
481 行增加
和
33 行删除
+481
-33
CMakeLists.txt
+3
-3
src/Shell/CMD.cpp
+3
-3
src/Shell/CMD.h
+7
-5
src/Shell/ShellSession.cpp
+1
-2
src/win32/getopt.c
+0
-0
src/win32/getopt.h
+128
-0
src/win32/tailor.h
+329
-0
tests/test_server.cpp
+10
-20
没有找到文件。
CMakeLists.txt
查看文件 @
51eebe11
...
...
@@ -8,10 +8,10 @@ set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
#设置可执行程序路径
set
(
EXECUTABLE_OUTPUT_PATH
${
PROJECT_BINARY_DIR
}
/bin
)
#设置子目录
set
(
SUB_DIR_LIST
"Codec"
"Common"
"Device"
"H264"
"Http"
"MediaFile"
"Player"
"Rtmp"
"RTP"
"Rtsp"
)
set
(
SUB_DIR_LIST
"Codec"
"Common"
"Device"
"H264"
"Http"
"MediaFile"
"Player"
"Rtmp"
"RTP"
"Rtsp"
"Shell"
)
if
(
NOT
WIN32
)
list
(
APPEND SUB_DIR_LIST
"
Shell
"
)
if
(
WIN32
)
list
(
APPEND SUB_DIR_LIST
"
win32
"
)
endif
()
#使能GOP缓存
...
...
src/Shell/CMD.cpp
查看文件 @
51eebe11
...
...
@@ -26,7 +26,7 @@ CMD::~CMD() {
CMD_help
::
CMD_help
()
{
parser
.
reset
(
new
OptionParser
(
nullptr
));
(
*
parser
)
<<
Option
(
'c'
,
"cmd"
,
Option
::
ArgNone
,
"
列出所有命令
"
,
[](
OutStream
*
stream
,
const
char
*
arg
)
{
(
*
parser
)
<<
Option
(
'c'
,
"cmd"
,
Option
::
ArgNone
,
"
list all command
"
,
[](
OutStream
*
stream
,
const
char
*
arg
)
{
_StrPrinter
printer
;
for
(
auto
&
pr
:
ShellSession
::
g_mapCmd
)
{
printer
<<
"
\t
"
<<
pr
.
first
<<
":"
<<
pr
.
second
.
description
()
<<
"
\r\n
"
;
...
...
@@ -38,7 +38,7 @@ CMD_help::CMD_help() {
CMD_rtsp
::
CMD_rtsp
()
{
parser
.
reset
(
new
OptionParser
(
nullptr
));
(
*
parser
)
<<
Option
(
'l'
,
"list"
,
Option
::
ArgNone
,
"
列出所有媒体列表
"
,
[](
OutStream
*
stream
,
const
char
*
arg
)
{
(
*
parser
)
<<
Option
(
'l'
,
"list"
,
Option
::
ArgNone
,
"
list all media source of rtsp
"
,
[](
OutStream
*
stream
,
const
char
*
arg
)
{
_StrPrinter
printer
;
auto
mediaSet
=
RtspMediaSource
::
getMediaSet
();
for
(
auto
&
src
:
mediaSet
)
{
...
...
@@ -51,7 +51,7 @@ CMD_rtsp::CMD_rtsp() {
CMD_rtmp
::
CMD_rtmp
()
{
parser
.
reset
(
new
OptionParser
(
nullptr
));
(
*
parser
)
<<
Option
(
'l'
,
"list"
,
Option
::
ArgNone
,
"
列出所有媒体列表
"
,
[](
OutStream
*
stream
,
const
char
*
arg
)
{
(
*
parser
)
<<
Option
(
'l'
,
"list"
,
Option
::
ArgNone
,
"
list all media source of rtmp
"
,
[](
OutStream
*
stream
,
const
char
*
arg
)
{
_StrPrinter
printer
;
auto
mediaSet
=
RtmpMediaSource
::
getMediaSet
();
for
(
auto
&
src
:
mediaSet
)
{
...
...
src/Shell/CMD.h
查看文件 @
51eebe11
...
...
@@ -8,9 +8,11 @@
#ifndef SRC_SHELL_CMD_H_
#define SRC_SHELL_CMD_H_
#if !defined(_WIN32)
#if defined(_WIN32)
#include "win32/getopt.h"
#else
#include <getopt.h>
#endif //
!
defined(_WIN32)
#endif //defined(_WIN32)
#include <string>
#include <vector>
...
...
@@ -72,7 +74,7 @@ public:
typedef
function
<
void
(
OutStream
*
stream
,
const
unordered_multimap
<
char
,
string
>
&
)
>
OptionCompleted
;
OptionParser
(
const
OptionCompleted
&
_cb
)
{
onCompleted
=
_cb
;
helper
=
Option
(
'h'
,
"help"
,
Option
::
ArgNone
,
"print this
help
"
,
[
this
](
OutStream
*
stream
,
const
char
*
arg
)
->
bool
{
helper
=
Option
(
'h'
,
"help"
,
Option
::
ArgNone
,
"print this
message
"
,
[
this
](
OutStream
*
stream
,
const
char
*
arg
)
->
bool
{
_StrPrinter
printer
;
for
(
auto
&
pr
:
options
)
{
printer
<<
"
\t
-"
<<
pr
.
first
<<
"
\t
--"
<<
pr
.
second
.
longOpt
<<
"
\t
"
<<
pr
.
second
.
des
<<
"
\r\n
"
;
...
...
@@ -95,7 +97,7 @@ public:
struct
option
tmp
;
for
(
auto
&
pr
:
options
)
{
//long opt
tmp
.
name
=
pr
.
second
.
longOpt
.
data
();
tmp
.
name
=
(
char
*
)
pr
.
second
.
longOpt
.
data
();
tmp
.
has_arg
=
pr
.
second
.
argType
;
tmp
.
flag
=
NULL
;
tmp
.
val
=
pr
.
first
;
...
...
@@ -128,7 +130,7 @@ public:
while
((
opt
=
getopt_long
(
argc
,
argv
,
&
str_shortOpt
[
0
],
&
vec_longOpt
[
0
],
NULL
))
!=
-
1
)
{
auto
it
=
options
.
find
(
opt
);
if
(
it
==
options
.
end
())
{
string
sendStr
=
StrPrinter
<<
"
\t
无法识别的选项,请输入
\"
-h
\"
获取帮助
.
\r\n
"
<<
endl
;
string
sendStr
=
StrPrinter
<<
"
\t
Unrecognized option. Enter
\"
-h
\"
to get help
.
\r\n
"
<<
endl
;
stream
->
response
(
sendStr
);
return
true
;
}
...
...
src/Shell/ShellSession.cpp
查看文件 @
51eebe11
...
...
@@ -112,8 +112,7 @@ inline bool ShellSession::onProcessLine(const string& line) {
string
cmd
=
argv
[
0
];
auto
it
=
g_mapCmd
.
find
(
cmd
);
if
(
it
==
g_mapCmd
.
end
())
{
auto
sendStr
=
StrPrinter
<<
"
\t
未识别的命令
\"
"
<<
cmd
<<
"
\"
,请输入
\"
help
\"
获取帮助.
\r\n
"
<<
endl
;
auto
sendStr
=
StrPrinter
<<
"
\t
Unrecognized option:
\"
"
<<
cmd
<<
"
\"
,Enter
\"
help
\"
to get help.
\r\n
"
<<
endl
;
send
(
sendStr
);
sendHead
();
return
true
;
...
...
src/win32/getopt.c
0 → 100644
查看文件 @
51eebe11
差异被折叠。
点击展开。
src/win32/getopt.h
0 → 100644
查看文件 @
51eebe11
/* Declarations for getopt.
Copyright (C) 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifndef _GETOPT_H
#define _GETOPT_H 1
#ifdef __cplusplus
extern
"C"
{
#endif
/* For communication from `getopt' to the caller.
When `getopt' finds an option that takes an argument,
the argument value is returned here.
Also, when `ordering' is RETURN_IN_ORDER,
each non-option ARGV-element is returned here. */
extern
char
*
optarg
;
/* Index in ARGV of the next element to be scanned.
This is used for communication to and from the caller
and for communication between successive calls to `getopt'.
On entry to `getopt', zero means this is the first call; initialize.
When `getopt' returns EOF, this is the index of the first of the
non-option elements that the caller should itself scan.
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
extern
int
optind
;
/* Callers store zero here to inhibit the error message `getopt' prints
for unrecognized options. */
extern
int
opterr
;
/* Set to an option character which was unrecognized. */
extern
int
optopt
;
/* Describe the long-named options requested by the application.
The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
of `struct option' terminated by an element containing a name which is
zero.
The field `has_arg' is:
no_argument (or 0) if the option does not take an argument,
required_argument (or 1) if the option requires an argument,
optional_argument (or 2) if the option takes an optional argument.
If the field `flag' is not NULL, it points to a variable that is set
to the value given in the field `val' when the option is found, but
left unchanged if the option is not found.
To have a long-named option do something other than set an `int' to
a compiled-in constant, such as set a value from `optarg', set the
option's `flag' field to zero and its `val' field to a nonzero
value (the equivalent single-letter option character, if there is
one). For long options that have a zero `flag' field, `getopt'
returns the contents of the `val' field. */
struct
option
{
#if __STDC__
const
char
*
name
;
#else
char
*
name
;
#endif
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int
has_arg
;
int
*
flag
;
int
val
;
};
/* Names for the values of the `has_arg' field of `struct option'. */
#define no_argument 0
#define required_argument 1
#define optional_argument 2
//#if __STDC__ || defined(PROTO)
//#if defined(__GNU_LIBRARY__)
/* Many other libraries have conflicting prototypes for getopt, with
differences in the consts, in stdlib.h. To avoid compilation
errors, only prototype getopt for the GNU C library. */
extern
int
getopt
(
int
argc
,
char
*
const
*
argv
,
const
char
*
shortopts
);
//#endif /* not __GNU_LIBRARY__ */
extern
int
getopt_long
(
int
argc
,
char
*
const
*
argv
,
const
char
*
shortopts
,
const
struct
option
*
longopts
,
int
*
longind
);
extern
int
getopt_long_only
(
int
argc
,
char
*
const
*
argv
,
const
char
*
shortopts
,
const
struct
option
*
longopts
,
int
*
longind
);
/* Internal only. Users should not call this directly. */
/* extern int _getopt_internal (int argc, char *const *argv,
const char *shortopts,
const struct option *longopts, int *longind,
int long_only); */
//#else /* not __STDC__ */
//extern int getopt ();
//extern int getopt_long ();
//extern int getopt_long_only ();
//extern int _getopt_internal ();
//#endif /* not __STDC__ */
#ifdef __cplusplus
}
#endif
#endif
/* _GETOPT_H */
src/win32/tailor.h
0 → 100644
查看文件 @
51eebe11
/* tailor.h -- target dependent definitions
* Copyright (C) 1992-1993 Jean-loup Gailly.
* This is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License, see the file COPYING.
*/
/* The target dependent definitions should be defined here only.
* The target dependent functions should be defined in tailor.c.
*/
/* $Id: tailor.h,v 0.18 1993/06/14 19:32:20 jloup Exp $ */
#if defined(__MSDOS__) && !defined(MSDOS)
# define MSDOS
#endif
#if defined(__OS2__) && !defined(OS2)
# define OS2
#endif
#if defined(OS2) && defined(MSDOS)
/* MS C under OS/2 */
# undef MSDOS
#endif
#ifdef MSDOS
# ifdef __GNUC__
/* DJGPP version 1.09+ on MS-DOS.
* The DJGPP 1.09 stat() function must be upgraded before gzip will
* fully work.
* No need for DIRENT, since <unistd.h> defines POSIX_SOURCE which
* implies DIRENT.
*/
# define near
# else
# define MAXSEG_64K
# ifdef __TURBOC__
# define NO_OFF_T
# ifdef __BORLANDC__
# define DIRENT
# else
# define NO_UTIME
# endif
# else
/* MSC */
# define HAVE_SYS_UTIME_H
# define NO_UTIME_H
# endif
# endif
# define PATH_SEP2 '\\'
# define PATH_SEP3 ':'
# define MAX_PATH_LEN 128
# define NO_MULTIPLE_DOTS
# define MAX_EXT_CHARS 3
# define Z_SUFFIX "z"
# define NO_CHOWN
# define PROTO
# define STDC_HEADERS
# define NO_SIZE_CHECK
# define casemap(c) tolow(c)
/* Force file names to lower case */
# include <io.h>
# define OS_CODE 0x00
# define SET_BINARY_MODE(fd) setmode(fd, O_BINARY)
# if !defined(NO_ASM) && !defined(ASMV)
# define ASMV
# endif
#else
# define near
#endif
#ifdef OS2
# define PATH_SEP2 '\\'
# define PATH_SEP3 ':'
# define MAX_PATH_LEN 260
# ifdef OS2FAT
# define NO_MULTIPLE_DOTS
# define MAX_EXT_CHARS 3
# define Z_SUFFIX "z"
# define casemap(c) tolow(c)
# endif
# define NO_CHOWN
# define PROTO
# define STDC_HEADERS
# include <io.h>
# define OS_CODE 0x06
# define SET_BINARY_MODE(fd) setmode(fd, O_BINARY)
# ifdef _MSC_VER
# define HAVE_SYS_UTIME_H
# define NO_UTIME_H
# define MAXSEG_64K
# undef near
# define near _near
# endif
# ifdef __EMX__
# define HAVE_SYS_UTIME_H
# define NO_UTIME_H
# define DIRENT
# define EXPAND(argc,argv) \
{_response(&argc, &argv); _wildcard(&argc, &argv);}
# endif
# ifdef __BORLANDC__
# define DIRENT
# endif
# ifdef __ZTC__
# define NO_DIR
# define NO_UTIME_H
# include <dos.h>
# define EXPAND(argc,argv) \
{response_expand(&argc, &argv);}
# endif
#endif
#ifdef WIN32
/* Windows NT */
# define HAVE_SYS_UTIME_H
# define NO_UTIME_H
# define PATH_SEP2 '\\'
# define PATH_SEP3 ':'
# define MAX_PATH_LEN 260
# define NO_CHOWN
# define PROTO
# define STDC_HEADERS
# define SET_BINARY_MODE(fd) setmode(fd, O_BINARY)
# include <io.h>
# include <malloc.h>
# ifdef NTFAT
# define NO_MULTIPLE_DOTS
# define MAX_EXT_CHARS 3
# define Z_SUFFIX "z"
# define casemap(c) tolow(c)
/* Force file names to lower case */
# endif
# define OS_CODE 0x0b
#endif
#ifdef MSDOS
# ifdef __TURBOC__
# include <alloc.h>
# define DYN_ALLOC
/* Turbo C 2.0 does not accept static allocations of large arrays */
void
*
fcalloc
(
unsigned
items
,
unsigned
size
);
void
fcfree
(
void
*
ptr
);
# else
/* MSC */
# include <malloc.h>
# define fcalloc(nitems,itemsize) halloc((long)(nitems),(itemsize))
# define fcfree(ptr) hfree(ptr)
# endif
#else
# ifdef MAXSEG_64K
# define fcalloc(items,size) calloc((items),(size))
# else
# define fcalloc(items,size) malloc((size_t)(items)*(size_t)(size))
# endif
# define fcfree(ptr) free(ptr)
#endif
#if defined(VAXC) || defined(VMS)
# define PATH_SEP ']'
# define PATH_SEP2 ':'
# define SUFFIX_SEP ';'
# define NO_MULTIPLE_DOTS
# define Z_SUFFIX "-gz"
# define RECORD_IO 1
# define casemap(c) tolow(c)
# define OS_CODE 0x02
# define OPTIONS_VAR "GZIP_OPT"
# define STDC_HEADERS
# define NO_UTIME
# define EXPAND(argc,argv) vms_expand_args(&argc,&argv);
# include <file.h>
# define unlink delete
# ifdef VAXC
# define NO_FCNTL_H
# include <unixio.h>
# endif
#endif
#ifdef AMIGA
# define PATH_SEP2 ':'
# define STDC_HEADERS
# define OS_CODE 0x01
# define ASMV
# ifdef __GNUC__
# define DIRENT
# define HAVE_UNISTD_H
# else
/* SASC */
# define NO_STDIN_FSTAT
# define SYSDIR
# define NO_SYMLINK
# define NO_CHOWN
# define NO_FCNTL_H
# include <fcntl.h>
/* for read() and write() */
# define direct dirent
extern
void
_expand_args
(
int
*
argc
,
char
***
argv
);
# define EXPAND(argc,argv) _expand_args(&argc,&argv);
# undef O_BINARY
/* disable useless --ascii option */
# endif
#endif
#if defined(ATARI) || defined(atarist)
# ifndef STDC_HEADERS
# define STDC_HEADERS
# define HAVE_UNISTD_H
# define DIRENT
# endif
# define ASMV
# define OS_CODE 0x05
# ifdef TOSFS
# define PATH_SEP2 '\\'
# define PATH_SEP3 ':'
# define MAX_PATH_LEN 128
# define NO_MULTIPLE_DOTS
# define MAX_EXT_CHARS 3
# define Z_SUFFIX "z"
# define NO_CHOWN
# define casemap(c) tolow(c)
/* Force file names to lower case */
# define NO_SYMLINK
# endif
#endif
#ifdef MACOS
# define PATH_SEP ':'
# define DYN_ALLOC
# define PROTO
# define NO_STDIN_FSTAT
# define NO_CHOWN
# define NO_UTIME
# define chmod(file, mode) (0)
# define OPEN(name, flags, mode) open(name, flags)
# define OS_CODE 0x07
# ifdef MPW
# define isatty(fd) ((fd) <= 2)
# endif
#endif
#ifdef __50SERIES
/* Prime/PRIMOS */
# define PATH_SEP '>'
# define STDC_HEADERS
# define NO_MEMORY_H
# define NO_UTIME_H
# define NO_UTIME
# define NO_CHOWN
# define NO_STDIN_FSTAT
# define NO_SIZE_CHECK
# define NO_SYMLINK
# define RECORD_IO 1
# define casemap(c) tolow(c)
/* Force file names to lower case */
# define put_char(c) put_byte((c) & 0x7F)
# define get_char(c) ascii2pascii(get_byte())
# define OS_CODE 0x0F
/* temporary, subject to change */
# ifdef SIGTERM
# undef SIGTERM
/* We don't want a signal handler for SIGTERM */
# endif
#endif
#if defined(pyr) && !defined(NOMEMCPY)
/* Pyramid */
# define NOMEMCPY
/* problem with overlapping copies */
#endif
#ifdef TOPS20
# define OS_CODE 0x0a
#endif
#ifndef unix
# define NO_ST_INO
/* don't rely on inode numbers */
#endif
/* Common defaults */
#ifndef OS_CODE
# define OS_CODE 0x03
/* assume Unix */
#endif
#ifndef PATH_SEP
# define PATH_SEP '/'
#endif
#ifndef casemap
# define casemap(c) (c)
#endif
#ifndef OPTIONS_VAR
# define OPTIONS_VAR "GZIP"
#endif
#ifndef Z_SUFFIX
# define Z_SUFFIX ".gz"
#endif
#ifdef MAX_EXT_CHARS
# define MAX_SUFFIX MAX_EXT_CHARS
#else
# define MAX_SUFFIX 30
#endif
#ifndef MAKE_LEGAL_NAME
# ifdef NO_MULTIPLE_DOTS
# define MAKE_LEGAL_NAME(name) make_simple_name(name)
# else
# define MAKE_LEGAL_NAME(name)
# endif
#endif
#ifndef MIN_PART
# define MIN_PART 3
/* keep at least MIN_PART chars between dots in a file name. */
#endif
#ifndef EXPAND
# define EXPAND(argc,argv)
#endif
#ifndef RECORD_IO
# define RECORD_IO 0
#endif
#ifndef SET_BINARY_MODE
# define SET_BINARY_MODE(fd)
#endif
#ifndef OPEN
# define OPEN(name, flags, mode) open(name, flags, mode)
#endif
#ifndef get_char
# define get_char() get_byte()
#endif
#ifndef put_char
# define put_char(c) put_byte(c)
#endif
tests/test_server.cpp
查看文件 @
51eebe11
...
...
@@ -13,6 +13,7 @@
#include "Rtsp/RtspSession.h"
#include "Rtmp/RtmpSession.h"
#include "Http/HttpSession.h"
#include "Shell/ShellSession.h"
#ifdef ENABLE_OPENSSL
#include "Util/SSLBox.h"
...
...
@@ -27,16 +28,12 @@
#include "Thread/WorkThreadPool.h"
#include "Device/PlayerProxy.h"
#if !defined(_WIN32)
#include "Shell/ShellSession.h"
using
namespace
ZL
::
Shell
;
#endif // !defined(_WIN32)
using
namespace
std
;
using
namespace
ZL
::
Util
;
using
namespace
ZL
::
Http
;
using
namespace
ZL
::
Rtsp
;
using
namespace
ZL
::
Rtmp
;
using
namespace
ZL
::
Shell
;
using
namespace
ZL
::
Thread
;
using
namespace
ZL
::
Network
;
using
namespace
ZL
::
DEV
;
...
...
@@ -45,7 +42,7 @@ void programExit(int arg) {
EventPoller
::
Instance
().
shutdown
();
}
int
main
(
int
argc
,
char
*
argv
[]){
//
setExePath(argv[0]);
setExePath
(
argv
[
0
]);
signal
(
SIGINT
,
programExit
);
Logger
::
Instance
().
add
(
std
::
make_shared
<
ConsoleChannel
>
(
"stdout"
,
LTrace
));
Config
::
loaIniConfig
();
...
...
@@ -82,24 +79,20 @@ int main(int argc,char *argv[]){
}
#endif //ENABLE_OPENSSL
//简单的telnet服务器,可用于服务器调试,但是不能使用23端口
//测试方法:telnet 127.0.0.1 8023
//输入用户名和密码登录(user:test,pwd:123456),输入help命令查看帮助
TcpServer
<
ShellSession
>::
Ptr
shellSrv
(
new
TcpServer
<
ShellSession
>
());
TcpServer
<
RtspSession
>::
Ptr
rtspSrv
(
new
TcpServer
<
RtspSession
>
());
TcpServer
<
RtmpSession
>::
Ptr
rtmpSrv
(
new
TcpServer
<
RtmpSession
>
());
TcpServer
<
HttpSession
>::
Ptr
httpSrv
(
new
TcpServer
<
HttpSession
>
());
ShellSession
::
addUser
(
"test"
,
"123456"
);
shellSrv
->
start
(
8023
);
rtspSrv
->
start
(
mINI
::
Instance
()[
Config
::
Rtsp
::
kPort
]);
rtmpSrv
->
start
(
mINI
::
Instance
()[
Config
::
Rtmp
::
kPort
]);
httpSrv
->
start
(
mINI
::
Instance
()[
Config
::
Http
::
kPort
]);
#if !defined(_WIN32)
//简单的telnet服务器,可用于服务器调试,但是不能使用23端口
//测试方法:telnet 127.0.0.1 8023
//输入用户名和密码登录(user:test,pwd:123456),输入help命令查看帮助
TcpServer
<
ShellSession
>::
Ptr
shellSrv
(
new
TcpServer
<
ShellSession
>
());
ShellSession
::
addUser
(
"test"
,
"123456"
);
shellSrv
->
start
(
8023
);
#endif // !defined(_WIN32)
#ifdef ENABLE_OPENSSL
TcpServer
<
HttpsSession
>::
Ptr
httpsSrv
(
new
TcpServer
<
HttpsSession
>
());
httpsSrv
->
start
(
mINI
::
Instance
()[
Config
::
Http
::
kSSLPort
]);
...
...
@@ -107,14 +100,11 @@ int main(int argc,char *argv[]){
EventPoller
::
Instance
().
runLoop
();
proxyMap
.
clear
();
shellSrv
.
reset
();
rtspSrv
.
reset
();
rtmpSrv
.
reset
();
httpSrv
.
reset
();
#if !defined(_WIN32)
shellSrv
.
reset
();
#endif // !defined(_WIN32)
#ifdef ENABLE_OPENSSL
httpsSrv
.
reset
();
#endif //ENABLE_OPENSSL
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论