|
悬赏5金钱未解决
TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13- h% n! N) ?# C# {! Z- d) C
7 g' X- J/ g |( M7 u8 I+ E
2 L$ b, ~: z7 H8 pusing System;
/ K" ^& }" ~8 V- R* _/ l2 _using System.Threading.Tasks;
2 i! y0 I$ c) e! b: Z/ cusing HPSocket;
2 l2 v& j) O0 O/ xusing HPSocket.Ssl;
# G" c* b4 ?4 F$ j' O! _using HPSocket.Tcp;
0 J( ~4 W) B8 @" A( @% O N8 a. i7 {9 y( ]7 O0 m7 Y9 K
namespace SslServerDemo
( n3 u7 v1 l% f; ^& Y" T5 C3 b{; G8 B. e* a( x+ A1 Y
class Program
, [% B* h4 o; P) c T& E2 g {
# g8 r+ a1 y. ?' D6 u3 R static void Main(string[] args)8 [3 T# R4 _1 h5 }
{
4 ]) v9 L, X ` // 创建SSL服务端: y) b. W( ~, c
//var server = new SslServer();: W/ s3 M& S1 f+ k E. a
ISslServer server = new SslServer(); , Y o7 E6 q4 L! K# w$ ~% ?
1 f* ^' Z0 S. a! P0 r' i2 B // 设置证书和私钥
" ?: t7 C( M4 O% U ( D0 H& T7 J8 Z, G! m
server.Initialize(false);
6 E. C2 @$ q6 w) W6 p9 }- B5 J+ s3 i server.VerifyMode = SslVerifyMode.None;$ M) p* z$ J3 ?7 l2 j
server.PemCertFile = "D:/cxiapu/zs/server.crt";5 h- ?) j# d7 {
server.PemKeyFile = "D:/cxiapu/zs/server.key";- t0 m' r( d9 a ]
server.KeyPassword = "mwyfeeq568";
" w( e8 ~! s' x! E$ N) P server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
% o0 P4 n' l* n; H" q( B2 D
* |- |- ^& A4 J3 y( F //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
' n$ f- u: Q5 g7 h4 D server.Address = "0.0.0.0";2 `* ]7 C1 O9 b: p5 S, Y+ [
server.Port = 5001;
/ j; v+ N: R$ p
) H$ n# T! u* X) u- `& _: H // 启动服务端2 Z" s. Z7 [( X4 S$ Y' V |
Console.WriteLine(server.Start());
$ ?% S/ g! i) s; i Console.WriteLine("SSL服务启动 127.0.0.1:5001");9 `) i3 N9 n r+ d
t2 B6 N k4 c5 |0 o# D
0 t6 L( s6 a5 [0 P4 b9 z
4 K$ k, \; S) ]# n. M+ p
j# L2 T6 A' C4 _1 \
" [1 ?0 z7 z4 l6 @6 t" g/ X4 U+ j# C- I // 设置事件回调' @5 Q8 p$ n* R; m- C G
/ G0 z0 ~1 |7 l; H server.OnSend += (sender, connId, data) =>
' e$ V+ V3 b L0 V+ m {: y {! f) g0 r$ K9 M3 V
Console.WriteLine("发送事件");
8 e0 z! y- l' P
* i! U# p, u% G6 I% R4 H
% w9 p% U6 w8 x" [; \3 d# W! y% O/ b return (0); 8 k5 ~) E; [$ V4 g
};! ?4 a% |1 V* u9 T# O2 Y2 E* E
0 m, ^: g& j& _# c7 F server.OnHandShake += (sender, connId) =>
' k# Q$ J' m* q6 K. s {
2 `, g( q) V: h x3 e$ Y" w3 s7 O' O7 y3 e
Console.WriteLine($"握手事件");* U! \2 c# q9 y$ \
return (0);1 U6 N& a( V/ s n
};
# |" a1 F/ P4 d5 r$ K5 ]( P4 S! R8 r+ F- g& J
9 | T# t2 r. |6 Y: X! A% h
server.OnAccept += (sender, connId, client) =>) G. B7 E6 U% w \# W) m
{
5 ]! B8 o0 T* r1 L% V3 Q Console.WriteLine($"客户进入: {connId}");
& Q c3 V; z: k1 @
5 H* h/ X/ _! S // 发送欢迎消息给客户端' J+ \% Y# n# o0 q& X6 M2 s3 I; K( |
- t$ h5 @ ^2 T; a+ C
# { r0 m- i# c# p+ Y1 }; B) x //server.Send(connId, "Welcome to SSL server!");
. z7 o3 U! u: }9 J! W: f! ] g return (0);, o; K2 ^) b( x% O
};
/ ^* k# d4 y3 ~1 X) c: f3 J server.OnReceive += (sender, connId, data) =>
2 ?5 M: [ H" T: ]. q! H* k {
( G) |& S8 [, `8 q- M. K Console.WriteLine($"数据到达: {connId}, data: {data}");
5 |& `; e8 N. q1 M5 B7 K/ ] return (0);
: T2 X% I d7 l" m' U- O };
0 h) o& X3 ^+ i8 ^% H4 p server.OnClose += (sender, connId, operation, errorCode) =>
5 K7 a) _$ F, h2 X% _( t; u3 w3 p/ m {
( H; h3 V. ^; H& u5 [ Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");% V( \) P7 S0 B. Y3 r
4 Q% H2 s" a7 {& k( ~3 K# m
return (0);* _5 j! X5 _9 Y9 J5 k/ M8 s6 Y
};. L- b. j- ^ Q5 D
: g6 `; ~ T! [* U" C8 P. L4 }" q( o9 [& B
4 X8 H7 C# h, l2 m- n( \7 E* h9 N2 `% V
% q* k0 ]+ C, b* R6 d
4 J( M$ Z6 V! R# J5 F
// 等待客户端连接并收发数据+ b& T: R; U2 [- |6 q* b
Console.ReadKey();
6 D, @. j8 }7 E8 c
- V! T- Z9 S2 d3 W! a6 r6 J; }8 ~ // 停止服务端9 E+ Q% S3 P3 `6 l
server.Stop();& t- W6 X( {+ q0 q) V
}
) k4 w2 \( L) ], }" {8 v! \ }
$ k6 l; ~. N$ B# W( m( \+ L, x}
6 l+ Q+ T7 c" w- p2 w+ `- Y# ^; P' o( \1 F+ s
$ C8 w7 q. S& \: o: [ H2 G+ ?3 ~
|
|