TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13
% Z% @4 A/ R, N6 t3 s
9 \" D" h H6 ^, ]& O4 B) E+ l7 o8 f0 s
using System;" l: }2 a' ~/ I
using System.Threading.Tasks;
1 A t2 }5 d Y* B' X8 l" J# o& zusing HPSocket;2 H- B1 j/ D! h$ y1 \! T( C& u
using HPSocket.Ssl;* q& Q5 i8 {5 y, `; ]
using HPSocket.Tcp;
2 {' V J6 r! o6 ^9 t9 h
2 j- s5 N E- I5 T. M Y gnamespace SslServerDemo
8 G8 A4 t; V* S. L% Q4 o{
6 o$ J; t! P" c' G: x class Program* }4 K2 q0 D' d& ]
{
, O5 Q1 n! N4 s7 J9 W0 J static void Main(string[] args) d6 f& Y) `% E! _7 i
{
9 A( t F: B( A3 _( \9 _& A // 创建SSL服务端- b' i# O$ x( X/ E/ K
//var server = new SslServer();1 ^: B, U" Z% F6 b( \' s
ISslServer server = new SslServer(); 0 E: w6 {0 c% M. ?
/ J! L; e7 o4 l# c // 设置证书和私钥
* y& S4 \# u. j$ T& H" ] ( ~8 j H9 r: }
server.Initialize(false);
7 H2 x+ z. F0 n3 ] server.VerifyMode = SslVerifyMode.None;
! z! e A# t; b" M server.PemCertFile = "D:/cxiapu/zs/server.crt";' ^: a0 g! H% C
server.PemKeyFile = "D:/cxiapu/zs/server.key";; Q: g& E0 S* l& g
server.KeyPassword = "mwyfeeq568";4 b* W/ z: `2 [* q8 t2 z
server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
, O6 [; C0 H/ I6 p7 Z* u6 j# D x0 ]* V" ^
//server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
- `1 g4 Z- e$ T+ F. {% y: n server.Address = "0.0.0.0";/ r! n9 N' h4 T
server.Port = 5001;+ Y2 I- }7 j( p" b" o
0 k% a* [( t% `
// 启动服务端
`9 S, ^$ J4 P; M1 } Console.WriteLine(server.Start());
: T- b+ |3 f3 S( o$ d0 W Console.WriteLine("SSL服务启动 127.0.0.1:5001");
2 N2 l8 T/ z* R1 n( o/ s3 }" u9 S+ A! M2 K* {: D5 `
) m# T2 Y n& } p' I, G
" o3 `2 i, h$ J% n8 M% n# ~
% z5 l% X X, }3 Z$ }5 C& Y0 G
/ b2 W& F% K1 T0 F! | // 设置事件回调: q, j0 @; @3 M* J
; v* p$ M2 Y$ h" U
server.OnSend += (sender, connId, data) =>, H: y! a+ z0 b# q7 k# k# a* \+ p- R
{
) ]; Y9 f5 s& R- K3 ?: { Console.WriteLine("发送事件");
0 w* X+ S5 K; H0 X3 a$ l: ?: h- {! \ i! v# Z9 N( y
9 Q+ F! x4 p- ?! I2 G+ } return (0); + I3 M: t" f4 {- [$ T( d0 ^ z
};
6 J' t4 M' _; ^! B' ?0 J. D$ v
, e4 a$ U2 O) \ server.OnHandShake += (sender, connId) =>
8 q$ C0 ~6 x" p' x) M: u4 Z9 L/ B {
0 ^ m" ~6 R1 a' |: f, t0 H8 {9 Y# o: g7 A( C, y
Console.WriteLine($"握手事件");
9 n* o0 ^& U2 [! C return (0);) U; m. D' T8 @ `' K3 j5 Q9 Q5 y. E0 m- l
};
; W, k8 }2 ]+ J8 E% w+ R( n; Z" d* e
" d4 y2 y( q1 K: ]' ]( h3 o; s5 v* y server.OnAccept += (sender, connId, client) =>5 c8 b5 V% @) e6 E8 d; }1 K: Q& ~
{! F* A5 V- M; E+ J% P3 g
Console.WriteLine($"客户进入: {connId}");% p( O* ~: W3 t6 E
9 S. h. _$ w r, {8 \ // 发送欢迎消息给客户端! G' @( d4 F; ]" r
" R. ^1 S v: p9 ?) r8 a( X7 n! e! K
8 G/ t5 P3 X8 { //server.Send(connId, "Welcome to SSL server!");( y7 E' R. \ s' C
return (0);6 n" X7 {4 X3 ?# B4 n2 x7 a: |
};8 \3 L8 d z) M4 }' Z
server.OnReceive += (sender, connId, data) =>
- d) V, m- \& m. B9 C {6 o9 j+ k, P E
Console.WriteLine($"数据到达: {connId}, data: {data}");
x9 p% ?) m4 d8 S5 Y0 v' g return (0);
7 a, D+ u% X: { };( j: h2 o7 @, a; C/ |) Q! n, M
server.OnClose += (sender, connId, operation, errorCode) =>3 q w* F7 t# s* Y& r: Y8 a/ V
{
' e! [# U8 I4 b- w# p Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");
x/ L/ k% { M ! h7 [! Z/ s+ Q
return (0);. P6 V# l# i2 m* |* Y
};$ W# P: r8 B. Y3 R' c
; X5 f) z* P% _5 D1 }' Z, }! l
( x$ q: A+ k5 _
7 P$ v8 P' g4 ]# P5 C) Q. q5 ?$ r- [; v& Z
' s0 M E6 f4 R$ k; M7 |; |( l2 L4 m$ U2 V0 r' B1 v" j3 @
// 等待客户端连接并收发数据
, d' P6 u6 ^+ z4 A; L- _ Console.ReadKey();2 z# n" f5 {/ G1 e* t
- p8 r4 o% j$ Q: \6 c' j* O. y // 停止服务端) O, T) c/ P6 p% F) Y+ k
server.Stop();
& E! X( `* D" i; }! Q/ j }1 I4 e2 |/ L) z( j8 Y
}( j) k: E! T5 Y X' l$ S
}
7 v& c- v/ n/ }) \7 l7 l4 z$ S8 E. ]. v" p9 } f
/ ^- M( ~; C: {( U# ` |