|
悬赏5金钱未解决
TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13
1 ^0 L! w; H6 j% l! o8 |
' A1 L2 _9 P: b' i P3 C" V' f0 ?$ B. a# |- V
using System;
3 Y) `$ z. N# b4 k# R0 Musing System.Threading.Tasks;
: y2 l, ]/ l* Vusing HPSocket;
: e2 k2 s: c/ I. o4 nusing HPSocket.Ssl;
" d# ]! Y, a, Lusing HPSocket.Tcp;, o: s# k+ u V! _# t
0 L" I% F! \6 ?
namespace SslServerDemo
: Q- [$ ^( N" C0 |6 ], Z{1 R- }2 ?: u. B1 N$ w
class Program- |0 O2 F. ` f' {3 ]3 o- ?. g
{
* h. S' K0 g& g/ _2 c# C static void Main(string[] args)+ y2 Z: E& F; }! a5 F5 Z' L
{
8 z% ?7 y: G: ^5 X, n // 创建SSL服务端
$ X8 r$ H/ b+ ]) c //var server = new SslServer();* C5 S+ O" B( ?5 d" k
ISslServer server = new SslServer();
& m) W: T- R x7 W' s
8 Q/ p, S3 @; J& L0 u$ j" Y // 设置证书和私钥$ I7 P+ U/ Q: f( H6 C% ^" i
, l+ d4 Y$ O) @6 S server.Initialize(false);" S/ X5 M; N ?. x" |
server.VerifyMode = SslVerifyMode.None;3 S/ o! v# ?2 T. u
server.PemCertFile = "D:/cxiapu/zs/server.crt";
/ ~# q3 ? h N7 ] v, y server.PemKeyFile = "D:/cxiapu/zs/server.key";! ?. y/ Y% @- c
server.KeyPassword = "mwyfeeq568";" m& V* I! I: K
server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";0 s5 ~' m- |% y2 }$ o. g
! [9 L1 _" T, \* t2 x& g //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
' b, R7 V+ b- N& U2 t1 T server.Address = "0.0.0.0";* H7 _6 Z$ \# `# B3 [- K4 {
server.Port = 5001;
1 A- A. a6 E1 | V* }; {: ?
* A) L7 E0 x! |, B // 启动服务端& w, s. I) ?* c
Console.WriteLine(server.Start());5 D- w2 J/ t2 d
Console.WriteLine("SSL服务启动 127.0.0.1:5001");
# Q3 f: r2 X/ N) V2 i" B) w7 y5 [7 U8 v
* d+ T- Z1 w6 l9 }# I. k9 ^8 T" q b/ b( i
' f g. I0 @/ x, F/ k8 y/ ]" v; `; y
// 设置事件回调
5 t; T+ q) ]! {9 B/ s5 f8 T- f4 Q1 ]- ^. Z' [0 }" {
server.OnSend += (sender, connId, data) =>1 l; B- u: q( h
{, g' [" c+ s3 @, L9 L6 X* g% I: G
Console.WriteLine("发送事件");
- a6 h- Z8 Q/ U ?5 q. u
# c* q: A8 n' {# e v& e4 i
6 \8 F5 R7 G2 Q$ }, _/ C& _ return (0);
; q A+ M! n, ?3 N x5 z }; P2 k/ W6 j$ Y. ~- P# A
) h& N# a: ?/ [. i1 x* I' x4 C server.OnHandShake += (sender, connId) =>
6 G1 k- N$ z9 X4 o4 L2 k {$ u% }4 T' t( a$ _* L! q1 C5 S
- B( k& A: S7 f; l Console.WriteLine($"握手事件");6 `" x% k* V, i5 F8 y, N4 C/ ~' ~7 _
return (0);
* u( @ v. b* Z$ S1 A4 D };
9 v4 k3 }. }6 {+ h/ R- V
1 |+ @, a C8 B" M0 {2 |: O4 V. z3 f- @" O; T% r! l: A
server.OnAccept += (sender, connId, client) =>
+ B% g e" J% I: d$ ~' t1 C {6 s/ ~4 X+ q; H- |0 E4 z, P& R
Console.WriteLine($"客户进入: {connId}");
) n1 D2 ]. y: ]
4 G# v& h& \2 E, E: s+ w) {( k // 发送欢迎消息给客户端2 v* ^( U' f& F. ^ X
5 B' ]! E2 N {- D' E, X
0 {% T$ _) D# a5 A+ @, X% g% g1 g, ^9 J //server.Send(connId, "Welcome to SSL server!");9 j4 {# }7 q$ L E, h
return (0);
0 u6 v2 v/ O' @# U$ O9 j9 V };
; a% k+ ~, }" H2 Q9 Y! P server.OnReceive += (sender, connId, data) =>" P& Z% E v# e8 N
{
" H* R6 B7 P( \ Console.WriteLine($"数据到达: {connId}, data: {data}");/ z) @) `" d+ ]% }( `
return (0);( O" c$ T) v; i, Y5 A: [
};5 {& t; D2 D8 n5 H1 Z, H. L
server.OnClose += (sender, connId, operation, errorCode) =>! z$ d) J) b$ d9 f8 K: j
{
+ b* r m0 r# {. U. f3 h8 H Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");
- y! ~2 s* J; A( }5 s7 N" S 4 q* y; [ {8 s: H/ W; L
return (0);: g6 g% ]# P% h* E
};3 P2 R" G5 ^! Z9 e
6 Z* {9 p; B$ i/ T
9 I, ]' ]) T0 s) r) r2 h; F- L E" R% U1 P0 s
' L# D1 g [) R3 `4 [
! t( M# S( G& z) @. x/ i4 i% f; o$ V& ]' P
// 等待客户端连接并收发数据' G, C ^8 z, @+ E0 c% E
Console.ReadKey();, Y( R. E q/ b
/ y) k# M' K+ k. |
// 停止服务端
: I" A5 J, u# O server.Stop();6 e5 z1 q! H4 E& M) D) v
}& S4 h* H; F T6 J- e8 g
}
& c) d' `% g& s* `, K}
9 y! {; k( s' o0 v+ ]/ L9 M: C2 T9 `- r. a. [
2 ]5 Z0 l+ ~: y6 ~
|
|