TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13
% c0 i9 ]& `; d2 h- B6 t7 J- o; x* s0 ^/ P* Q! I/ B8 D. ]
2 W# Y6 R1 r6 Y" t3 e0 ~5 A
using System;; Z+ W# P. \* ~7 d
using System.Threading.Tasks;, T, V7 P% Q; r4 ^
using HPSocket;: z) k! s% T ?
using HPSocket.Ssl;: x6 U$ m [& q9 S$ C$ I' B
using HPSocket.Tcp;7 c) [ H, S0 Q' @& K
/ n8 ^& W% [" Gnamespace SslServerDemo
1 o; u$ I. I. d3 e{) Q1 ^8 ^6 h6 Y
class Program
7 j8 E! t1 J, A' I; a! ? {4 i2 B2 H7 c. T P7 b
static void Main(string[] args)& [& z) q% ?1 y' P
{& {) \6 ?3 d) C6 D# {/ ?; ?
// 创建SSL服务端6 z9 X1 A5 a F+ Z4 f8 B
//var server = new SslServer();! c6 S8 J9 K& E; S' C% Y
ISslServer server = new SslServer();
: F) \1 m1 H. R1 @9 Q( R# _, X
, C" c7 U' {& ]$ A4 g1 a. j // 设置证书和私钥
1 r& }! m x# t: d $ e+ [8 w$ I! s6 G; J
server.Initialize(false);
; @6 r7 l; _3 m3 R8 a server.VerifyMode = SslVerifyMode.None;
, u8 L5 e2 ^; B3 G server.PemCertFile = "D:/cxiapu/zs/server.crt";
( g: A2 d- X# }- _, L server.PemKeyFile = "D:/cxiapu/zs/server.key";
- {3 b3 g0 c) M* E server.KeyPassword = "mwyfeeq568";
: {9 m; d* j$ K server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
) s ]. r/ v* J5 n& I
9 V1 m; H, N( Y7 u7 t //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
0 a2 i8 K/ a; q! ^! R- k server.Address = "0.0.0.0";3 j& f0 |* C7 Z {
server.Port = 5001;
4 A. C; E# V0 l5 M. @; _* P& f& P( Q2 u4 a8 n2 @; H! `0 L
// 启动服务端
$ t" Q! q4 _+ T q2 B" z7 ^* x Console.WriteLine(server.Start());
- V/ `7 }0 A5 i0 D+ a7 ` Console.WriteLine("SSL服务启动 127.0.0.1:5001");" `! e$ b* Q/ k/ r9 F
# w, A1 M. r( y* C' \1 M# d& \
5 U' A1 j$ w& p. ?5 Z4 e8 z5 n
& @+ K2 Q( I: u7 }# L
8 e6 p! ^9 S$ S/ `$ [: B
3 C* Y9 M5 c" H1 g // 设置事件回调
* Q2 G6 P" z0 X" |/ ?+ A" P4 z. U- c: x4 e; Y: G
server.OnSend += (sender, connId, data) =>
& q' g7 K( \$ Q7 w+ m; V6 Z* Q- J {/ J5 C" N T: J% x; U2 X
Console.WriteLine("发送事件");
M6 a( \ ~( N( g# A% i5 F* L" b: s) h% y7 D, X+ P% B+ O8 o
' g1 Z8 `$ P5 {! y" _* { return (0); ( r7 O) Y5 g# S4 {+ V5 c
};! \- {8 t5 J4 {/ Y: ]7 _* K0 t5 k5 e
. M" x1 b$ s$ [' d4 U) w! L* K* E server.OnHandShake += (sender, connId) =>! m3 `4 L& }* q: ~4 q
{+ }, B; j6 ^2 `6 G/ j
( D" Z* j) K9 V! J/ u. k: y, X
Console.WriteLine($"握手事件");
) T! a; u) [6 W! N& p return (0);
. u% ^' k0 ]5 g8 F5 f+ K/ C7 Y };
. |! |* A/ J+ Z9 ]0 @9 B6 D, i3 G: _. w/ K4 B% ^
2 U) u" H L, \, F: T1 j3 I server.OnAccept += (sender, connId, client) =>6 b+ m% g; y5 u Y% \5 c! Z0 {3 P1 n% v
{0 m% `" r; C! A) { N8 C3 W
Console.WriteLine($"客户进入: {connId}");
4 z4 \0 X7 L: R7 @% w, \+ L
. A% J2 t' U" Z! |, {! ?% Z" r5 [: S6 M // 发送欢迎消息给客户端5 `( ]$ _+ o& C
" \; q7 Y7 W9 T( l0 c+ D( ?) Q+ p/ g
9 i4 `( I/ l- M2 e3 g //server.Send(connId, "Welcome to SSL server!");
5 f, ^+ c7 M( W/ ~) s return (0);2 l" m& w1 c1 I# {/ N: N1 r
};
; a' s1 k: t3 V# H5 d/ w5 u server.OnReceive += (sender, connId, data) =>
# u! X: E$ l; `8 ~. D& H5 p3 n' o {
# Q1 y8 S) i. @0 R) U, f$ t% O Console.WriteLine($"数据到达: {connId}, data: {data}");
, _( Z/ s& c) u; X' }. _$ f* z return (0);
0 E% b6 P) b: ~! _ };, W8 P0 ?# U0 T% [
server.OnClose += (sender, connId, operation, errorCode) =>
- x; i" S/ P, Z5 c0 }4 T {: A @4 ?1 {3 N( a8 w. |/ I L
Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");
i, O; \* e9 j
9 i8 X# b1 s* i7 A return (0);4 x0 D" s. A5 ?* s) A
};
7 A/ s$ r1 m+ Z
: c' s9 a2 {5 l. l- W1 j( R, B B0 n& C% X/ ]3 T0 {, Q: p0 F
2 l3 U, I/ Z! }, s3 x4 y! |. u7 C% j1 B3 ~& t! _9 C
7 O# K. e# a1 S: h7 u
) e5 _5 E3 Y: n9 S // 等待客户端连接并收发数据
' X& [6 p$ H1 h6 C/ w1 L2 ]3 { Console.ReadKey();
* J, q- m' M! I" n9 p/ X4 Z# x, O. K& G0 l& C$ C' a! Z
// 停止服务端
8 o- X9 e; ^( ]. j- s: L2 c server.Stop();* d) {: T. B4 U$ f" ]- f; }+ n
}
v6 X i5 W: ]/ n: C" E% ^4 E7 P }
' y0 G; f/ `! Q6 r2 T}7 {" l$ A# Y* A8 d/ z: p
8 z: k1 a9 f. G. f& Q4 L$ W
- y) E9 h g, ? `/ p; S |