TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13/ b# Y @7 \% o% `8 h( X7 D
2 V& I2 ^2 g5 h" E# _7 U
5 P7 I4 M' D: k/ R4 ?# @using System; B! [4 J( U: _+ [
using System.Threading.Tasks;
8 o0 [* L) u# Jusing HPSocket;% W2 S/ p6 K( C( A& J
using HPSocket.Ssl;0 q- M% x% C) l
using HPSocket.Tcp;
9 C) h- |- D: ]+ S, R: G
, k9 l' m5 G! k1 M: |1 Hnamespace SslServerDemo7 I8 K& R$ {% N6 f# R. L
{
+ d a6 c/ K' I class Program
% Z$ o) G% X5 o. {% ?$ V- I* `5 g {
$ J+ V+ R5 j9 v l! r/ [! E static void Main(string[] args)9 h; l% e# Q# z3 m- v1 \
{3 O/ p' f0 j" L( \- ~
// 创建SSL服务端
4 W0 i( S# u- d0 t2 W4 v //var server = new SslServer();% c, X& N: e% e' Y. F$ o( y
ISslServer server = new SslServer();
" s* X$ N7 a" p" B7 x2 B* @5 Z/ b6 ]/ A8 K% q- @
// 设置证书和私钥; d% J* |0 o8 A6 i, h5 w% i
) p2 K" J) j( D! d, g3 L% x server.Initialize(false); p, l% k: K5 U3 K/ g7 e
server.VerifyMode = SslVerifyMode.None;
) a& ]/ g+ h, D: j1 x/ A server.PemCertFile = "D:/cxiapu/zs/server.crt";
P: v, W& l% b server.PemKeyFile = "D:/cxiapu/zs/server.key";% U% Q3 |& O, k9 x- i& D
server.KeyPassword = "mwyfeeq568";% W# Q1 @0 i0 Y
server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
3 S& e% J' A+ V) K
+ {4 W2 o7 u3 P: m //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
0 G0 @; v* Q! q server.Address = "0.0.0.0";. u7 O/ a& A8 r: b, V7 y, p
server.Port = 5001;
% F, ~8 A, k8 `8 t; ^# {, L$ h# w% \2 H+ P1 I8 d
// 启动服务端
% {9 L7 }6 ]8 U! |/ t4 \ Console.WriteLine(server.Start());7 D0 V" x, f' z
Console.WriteLine("SSL服务启动 127.0.0.1:5001");
/ R0 k* C; {0 t. `8 z; M$ B
# A; |) Z# P6 N0 k+ l$ X- P4 `
1 @1 R. _% w: u9 j' B
5 D W4 O1 o; V0 u
' Z6 I5 D' x6 }& k. k4 c // 设置事件回调
4 n9 {- X U6 k( A. L7 E
: P! ]; s* e* ^8 [* |4 t Y server.OnSend += (sender, connId, data) =>* W+ y/ n9 [ V8 G
{
4 { s1 t2 p- P: S4 U Console.WriteLine("发送事件"); K$ R D! d$ `* f3 @
- u5 e: e; G0 F" j! d
: n6 w# }$ `8 y( C% B! w, p return (0);
+ I, N3 W6 x# H | };
. u$ \( e8 X# B; ~- [( r# a* A1 P i8 A7 N2 b
server.OnHandShake += (sender, connId) =>
" t: K& P$ H& Y {
3 _$ O' h3 }+ P$ j; Z5 O% ~5 Z; _; d Z4 @, N, ?. h
Console.WriteLine($"握手事件");9 Y; {. A4 g3 C, B& J6 E/ O
return (0);$ m5 s+ M9 t) E% D) q, h5 c7 s) Z
};: P5 b: j) \" F4 D/ b2 c V1 X3 Y
* D0 ?% P2 j( f4 ]' z7 @0 p! C3 U& `
1 u6 [: w6 n1 @# [ server.OnAccept += (sender, connId, client) =>- b0 ]* K7 f( P( y7 M/ U
{( r! O+ m+ \6 [9 b. o" u
Console.WriteLine($"客户进入: {connId}");
2 Z. O/ ^/ G( V9 Z, Q
/ p( }$ a1 \* S" n0 { // 发送欢迎消息给客户端' T% a& {3 X& Y! h4 |% V
$ r6 _ z; W+ N4 a/ j" f
" \4 v; J0 a" I1 ] Y2 w/ R
//server.Send(connId, "Welcome to SSL server!");) d; u3 o) }! f- M
return (0);
! d& @+ d$ {0 j5 M9 J5 ]( w* P& D };( K0 @/ I4 R) @& ~$ K% `7 b; I
server.OnReceive += (sender, connId, data) =>- L9 U( l: _" ], v# x% S! \/ Q
{
3 N: m1 v9 }) z$ U" _3 C7 T1 z Console.WriteLine($"数据到达: {connId}, data: {data}");
8 g! D% p- _5 @4 ] return (0);
# y3 b9 k* b( p0 L6 f3 P9 B };% k/ j6 ?8 P* D
server.OnClose += (sender, connId, operation, errorCode) =>
& l+ n0 e! E' w/ _ s! l {
. v$ A# g/ @) [% z Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");0 O4 |$ q. f0 Y. Z% g) i" f: o7 Y
( E( T5 [$ e: ~5 K \- w. u
return (0);
0 C6 R. z9 z' H$ X) Q) } };: L4 E, P' X+ b" Q0 M, i+ q
% M( V6 w# J7 B7 F% W( S, ^. K& Z/ j; V6 l; \6 s5 a
) c8 P V% P) R. V$ G
* L0 s$ A, O' n& |; o& `6 h% ^5 K . q5 F2 U7 H" x) e6 c) [
8 N0 N6 P: l6 d$ l u) F# u4 Y! y
// 等待客户端连接并收发数据
( c1 V5 Z5 B. H0 l Console.ReadKey();
; l% h$ Z! o, C ~2 Q5 Y* {5 |- ^2 L+ ] Y' O7 Y t
// 停止服务端
& x3 l; x4 B: w% Q: h( ~, G server.Stop();, z5 d; a0 h6 S; Y) ]7 S' @( q" {! U
}
0 m6 f; r) [+ {2 _# {" q }: F" v3 ~# Z3 e2 s
}! e; l# J( ~. z. _: p2 x1 o
) q9 N& B6 s) y. A7 u6 U
; Q) S! E+ e" K2 U3 D7 B, o' k1 u |