|
悬赏5金钱未解决
TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13. U8 M8 E" d. l* d+ O
& s1 P" m# q- p, h
* D, E* N# p1 g1 L1 I
using System;
) m/ i; Q2 r Y7 F, L' uusing System.Threading.Tasks;) M8 h% R$ y: h. {
using HPSocket;
9 D' z# }, q4 F" \" rusing HPSocket.Ssl;. @: F9 d1 q+ k$ d/ X
using HPSocket.Tcp;
. F3 u; {# w6 B* \. k
7 V: }2 J' C# @+ R Z3 C$ t3 ynamespace SslServerDemo
8 x5 @4 C8 @0 k; Y: {9 x{2 R6 a! r9 ?( O# p4 y* H5 e/ @
class Program2 w/ Q% j9 u4 b* ~2 ~" l x; l
{3 L1 E) L9 _& e l) v F$ }
static void Main(string[] args)
: ~; q. ?9 G6 D {
& A$ t' T1 K& E // 创建SSL服务端( E: j% s. ?+ C0 i
//var server = new SslServer();8 \ w# L+ B, D: h. I
ISslServer server = new SslServer(); , _7 G( W' J# v9 r+ H7 @
2 c/ Y! {' i f' B% e) I // 设置证书和私钥: { }; ], K" v: q6 |3 X" Y
1 a, y( j/ l( r1 N/ q
server.Initialize(false);6 s; i* ?3 o: ^' |$ R
server.VerifyMode = SslVerifyMode.None;6 L; W1 w: _4 i5 O5 r) W) \0 R
server.PemCertFile = "D:/cxiapu/zs/server.crt";
3 G& L/ c3 F5 i% [0 K3 `7 n server.PemKeyFile = "D:/cxiapu/zs/server.key";8 y* y$ |; T5 t& F$ N+ _
server.KeyPassword = "mwyfeeq568";4 r, I* Z' n% h5 |
server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";5 G" w& o2 c. i- {$ ^) x/ K
5 o" z% i4 S1 }) B/ n, Q( r$ ~ //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
; N$ T% ?( ^/ H* C+ q/ _& w server.Address = "0.0.0.0";
3 N2 V: g; x/ d5 R1 P; b server.Port = 5001;" v0 U+ U9 ], E3 ~1 _& ]) m$ P
+ b* n# `# c" U+ i, o; x) I* @
// 启动服务端
# N( s# R2 G' C1 n Console.WriteLine(server.Start());
4 d0 i r# [' @5 l9 z; s Console.WriteLine("SSL服务启动 127.0.0.1:5001");( E4 Y9 m3 I6 X3 g7 u/ W
7 n3 G6 P' L: A# {" k4 l: m+ k
' L0 Q9 N& t* \3 z' W9 e
5 b% I% K, [9 w: f1 I& X- ^. d1 d% Q! F7 P$ D$ m7 x
' M; ]+ ]& L! p1 `8 f) d$ |5 ^) K d // 设置事件回调6 K, T% j) t! Z. q: i( ^
& v& _0 v4 O, ^( l+ X
server.OnSend += (sender, connId, data) =>
, x6 {4 C5 p# y; P" @# g {/ B n1 `2 m! K0 i+ N
Console.WriteLine("发送事件");) E4 p7 ]* ?9 X+ {6 m* u
$ n: @" N& T. R
3 i) o3 P+ {, W& {( b2 p2 s return (0); 3 J! i! R* c( ^% c, x; k' ?( H
};
/ s6 a$ j' {" c h, p6 y$ _
( |: c, c3 F5 j' `3 U2 U+ m4 K server.OnHandShake += (sender, connId) =>8 h) _. S/ I, R9 K% Q
{ y% Q- |- d9 o; q
: u8 f3 Q( k0 f9 I8 B6 v
Console.WriteLine($"握手事件");& o$ B. O/ K( r2 ~ E' K
return (0);6 J8 h- K+ l& b
};5 H# E# L( v5 D7 n- y
! h# u# V' V; E N, D! N; X% L, t* k' [7 [ ~3 z8 _5 `) h
server.OnAccept += (sender, connId, client) =>6 o, b7 V! h E; ^6 b( \
{
& z7 E$ k+ w' f% I. X. S' y) S4 v Console.WriteLine($"客户进入: {connId}");
- q8 R/ \- _6 o7 Y1 H( H% X
% q: m1 O* ~4 z. f( X% f8 t4 b // 发送欢迎消息给客户端
~/ A O. {& m! U! i
) g# d$ M8 j3 X) m: `$ t. y, N0 |- V8 Q( W; N B4 g
//server.Send(connId, "Welcome to SSL server!");
2 b$ Y2 g0 ` ^: r7 M9 \4 k return (0);
, u! N# W* j5 @7 R1 D1 a };
( h1 \# Q) z$ R z3 D7 h( \ server.OnReceive += (sender, connId, data) =>" v1 R- l( m7 O5 K! o3 A
{$ V5 b5 C/ q" e# M9 u: ] B* w" }
Console.WriteLine($"数据到达: {connId}, data: {data}");# ]. L4 m: b+ b+ V
return (0); l `6 P! Q* d8 T k' M
};
( h# v9 J, F7 \7 F server.OnClose += (sender, connId, operation, errorCode) =>
G5 o. ?9 a% Q' O& a& a/ O6 v {8 X+ w2 w2 G+ U7 Z
Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");1 A3 D5 c3 o7 f/ [
1 Y4 Y* r- g" B/ P return (0);3 S% ~+ Y, G2 t3 M) T# Z0 A* c0 @
};
% ~; i! K: Z$ I5 J+ h& m
4 E) V Z0 }! T: ?, p8 O! y8 L3 a8 Z3 H0 Q. ?
2 u( l Y3 f0 h9 N4 h8 V
8 C9 M+ t y$ x5 a
/ Z: ^2 r l+ W. w0 q# L3 u" F
( t4 u4 ]2 {1 @$ C# J p# { // 等待客户端连接并收发数据1 w8 Y* `* Q# o
Console.ReadKey();* u/ V$ `5 Z& N# L# {
5 ~2 u5 \) w$ E) O // 停止服务端
" B* ?- k6 U# L' M server.Stop();
7 e+ y3 y% B5 S- i8 h' P- \% B: Y }, W( ~4 Q; k6 F/ u ^
}
0 K7 v6 J% ]. M}
/ ^; g0 C& Z' ]1 f$ J
5 l0 ` t, h% ], [1 G8 J
( |4 Y& v$ k$ l% z) |" A& i, I |
|