|
|
悬赏5金钱未解决
TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13
( O) Q9 L( h$ R4 O
/ d# d# j$ C2 W! l- C- u+ ?1 T" H/ g6 g2 _& y* g
using System;4 t9 S- O! D* G x% M. }
using System.Threading.Tasks;
8 q( ]0 t2 m: V6 lusing HPSocket;: [3 `6 u t! ]! W# x
using HPSocket.Ssl;- [* M7 J" o* C4 X2 p
using HPSocket.Tcp;
9 G) [ K" r1 H/ \3 Q: x% j7 K n' I
namespace SslServerDemo
. r* h/ X* j, H. L" w{$ K2 j4 P$ }* O
class Program
' P$ O8 ?- U" Q& e1 | {
4 t3 j: Y8 g$ }; ^ static void Main(string[] args)( L. p) ^4 v3 ^; n, p8 R+ I
{
& |* T3 m, ^+ k* f% ^ // 创建SSL服务端/ F: K. @$ M5 E/ T+ V
//var server = new SslServer();
! r* y" j# i! ?2 V% _$ l! N' W# N ISslServer server = new SslServer();
# J5 J- g! ~$ X) \, v: g+ ?
* H; r$ V- p* \/ W- }" d3 ^ // 设置证书和私钥. w0 j7 }5 r8 b5 X, x8 j2 C: W2 U5 Y
$ ~/ ?, b5 f8 r6 e server.Initialize(false);
- a: |$ b6 i4 L1 @; g2 F server.VerifyMode = SslVerifyMode.None;* [9 _+ I. `3 Y4 c
server.PemCertFile = "D:/cxiapu/zs/server.crt";5 {1 v `8 E2 H6 c9 f
server.PemKeyFile = "D:/cxiapu/zs/server.key";
8 j/ |) i/ Y% V1 d( q! i/ w server.KeyPassword = "mwyfeeq568";
% W. t1 f* c( n" I0 t server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
4 N0 t% x0 M, G5 x, O4 @3 W' G/ K" M5 P6 u
//server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
& `8 s5 W- p+ \& N- Y server.Address = "0.0.0.0";( G4 B- k& O3 o, ]' Q$ h* R
server.Port = 5001;
3 v; m$ X+ T) W" S$ q( e- w/ ]# P7 O
// 启动服务端- H$ h+ [2 G. {. C8 h0 C/ R
Console.WriteLine(server.Start());5 B; I- g: o5 Y
Console.WriteLine("SSL服务启动 127.0.0.1:5001");0 w8 r+ c. W8 Z7 N2 W$ I
2 Q3 a5 b9 D6 G- V3 i+ W: q
5 N5 o0 O7 \$ G. V7 h7 u
6 e' v1 e$ T" U! ? }$ k0 v) s0 i: y0 I1 G
- T- i$ G! h8 ~ // 设置事件回调
4 F5 Z% Q( }3 f- v9 O# X$ ?4 T8 e7 Y( W1 d1 G& D3 T0 m
server.OnSend += (sender, connId, data) =>. c; |. E r7 U. D
{0 Y, m+ a( i- h& h3 ?: x/ l
Console.WriteLine("发送事件"); N# Z0 R% \: z$ k
7 C7 H' y/ o% F; Y) G7 w. F
) G5 B" T2 S) `( }
return (0);
8 q( ?7 B! t+ B: x( I };5 u1 \ a) Y9 K: {; A* ^ L
3 N k* c8 o P& l6 |
server.OnHandShake += (sender, connId) =>
# D3 ]6 [, Z( f- D+ T' ^% _% b+ q/ ] {. l/ ?0 S: {2 d" O* w1 M8 H
j* k( d$ U4 ^ Console.WriteLine($"握手事件");) |' v3 Q# `2 j
return (0);/ h/ ]' ^7 P6 {& |1 T- e
};" V& B- \: J% P3 s Q
& i' C1 s& G9 U3 w9 e
( } z1 @# k' t% [- l) o2 I' O. p server.OnAccept += (sender, connId, client) =>: \1 b: Y) J/ g+ b' Q3 H& s
{& ?2 A" Z0 I- ?% I, l% o
Console.WriteLine($"客户进入: {connId}");
1 ~& N" g! D! l% H( E5 C" x
3 q2 Z, K7 A7 L* J // 发送欢迎消息给客户端9 I& U% U& B' C
4 a( A5 K! {! V7 \4 @+ k9 ^" r
- Y4 i' h' R# G# M5 Z% c+ z5 i' t9 ] //server.Send(connId, "Welcome to SSL server!");
* P# Z2 ?$ g O return (0);6 G* P( J2 x+ {; {- }/ r$ O! B8 H
};
. ^4 s( @% a# \# z0 a server.OnReceive += (sender, connId, data) =>
" Y# ?- M- v$ D8 I) i6 m2 }2 a+ P {5 o' C7 O8 U1 Y* l8 c e
Console.WriteLine($"数据到达: {connId}, data: {data}");
# Y8 ?4 y }. Z0 |' G return (0);
. c( f1 k% W3 C9 } m: d; J };
. `( ^8 S( `- @/ a. s* X4 u/ d1 W server.OnClose += (sender, connId, operation, errorCode) =>
( k2 Q% S/ k" Z' l3 k7 ~' j {
( V1 o: X& @/ D Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");
/ z ]9 \+ E% f* @; ]
1 t: J/ g" n! v4 B# j8 V return (0);
/ N3 o' s0 z" j+ m9 L };. o7 M& `0 d5 o( O" S
5 O p! X# }, K5 o m3 Y, w' e" \8 s' X9 e6 J; y! }
$ c5 P' o& f+ n6 E f) L
% u" X: _, l$ c5 j 3 c5 @5 b" r9 F0 z' {9 w( i. P
9 U! p. `9 f( S) p) r4 W) v6 M
// 等待客户端连接并收发数据( u( q! V; K5 F# B/ y3 p
Console.ReadKey();; I- n$ ~3 I2 X: a
8 u$ u! Z$ S! w4 o$ K7 S
// 停止服务端
2 E# q% k/ i7 z) @ server.Stop();$ Q t# @ l/ O2 O/ I! j) U" P
}
9 V' T/ l2 R! ~) M' ] }
3 r5 l. G: X' B$ q}
; K& X; i' V+ Q: h4 l& @3 ]8 }" }% D q" Y! d3 n, g
7 ]5 D1 ]2 ?! G" b
|
|