|
悬赏5金钱未解决
TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13 J6 g( z! `7 \2 F3 @: m. `
Y) i% b% A$ b6 G m8 ^/ A7 ]. g4 c2 Q& V! K
using System;
7 Z. h5 l" O: ^: Z: U: Uusing System.Threading.Tasks;- u0 b; ]2 _ I* l
using HPSocket;
) B/ H; {8 m* R9 t/ R4 v4 ousing HPSocket.Ssl;8 l% E6 c# j* b+ a* R+ g4 I- n5 Z
using HPSocket.Tcp;6 e* Q k, n4 t5 a9 f" V# K
) t% R; o( k+ C |namespace SslServerDemo b/ S* B1 K. G! L
{
* c# ]( r; d& ^9 { class Program6 |* R$ I5 S8 P6 R: T3 ]' \& i
{+ x" m) O1 [* E9 X) T
static void Main(string[] args)4 G4 V# R1 X9 t; @
{
X. J' z/ Q- N$ A* t3 m // 创建SSL服务端
8 O* r( v5 q" h$ n) I+ v //var server = new SslServer();) H1 G* u+ n" Z/ Q
ISslServer server = new SslServer();
1 E7 R8 z7 L6 l# u' C! j: Q- U- l, t$ G8 j5 C/ n
// 设置证书和私钥7 D- Y6 j4 X9 X( Z2 U. E' Q! J
1 n& }1 R6 _, {
server.Initialize(false);9 b) o- a. e. A% a7 p
server.VerifyMode = SslVerifyMode.None;
9 U: Z: z/ c7 G1 @, V5 G2 {$ A server.PemCertFile = "D:/cxiapu/zs/server.crt";
) X' r" J3 I! ? server.PemKeyFile = "D:/cxiapu/zs/server.key";
4 G1 r" T- z& a6 k+ w8 F server.KeyPassword = "mwyfeeq568";& z, I, L6 T+ r9 @
server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
; A* C' w( h3 n1 G! ]
7 ]+ M$ E& ~) D& ?( o( N% q9 ~ //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");
7 _2 J7 f) E- p& M' [5 L server.Address = "0.0.0.0";$ S- q) q: m+ a
server.Port = 5001;
# M" S$ y; s0 s! Z6 X/ J+ ~
, \$ l/ q& a* R: W: v // 启动服务端& f( w) J2 C" N+ t# r) K" l
Console.WriteLine(server.Start());
r* x5 S& Y0 h% B Console.WriteLine("SSL服务启动 127.0.0.1:5001");3 }! T, v2 g) K
! B; r, S' C7 z; P
& g6 j x8 ]/ @0 |# d( H6 L. } V! S4 {. ~. P) e) {
* r" T* M, ]6 n, g+ Z' }4 D
5 x N! B% }# q! r' V# ]* n // 设置事件回调6 V$ L, R' m( K
7 A3 u, |# G" E
server.OnSend += (sender, connId, data) =>; s" r: q9 j" R4 ?# U1 e: E
{
' W- G; ~7 G" f( I; h Console.WriteLine("发送事件");
# L- c# H9 ^' X2 C& a. X- Q$ G" R# _( G3 b5 D
5 l& q2 u! v+ j4 B2 Q7 ]* V( t return (0); ; ^8 L% N4 ^0 e7 M) I
};" I$ F, V" r3 }0 o# f
0 s' s' ^+ l) J7 m server.OnHandShake += (sender, connId) =>
3 A9 ~; P) L- F1 Y S" y9 n {
% w" v' U$ h. Y( N* X' g: I( ^
8 \! r* p0 R; N$ T1 q$ S& M/ F Console.WriteLine($"握手事件");& b }. Z) }* A' R6 p3 e1 Y% s
return (0);
7 k B# `# x( @ };3 M# C' H/ l) h8 d* J4 a3 M
& V5 c& d: V' P* @2 Y
9 ]2 V1 O q4 z' e, n; T4 m* y server.OnAccept += (sender, connId, client) =>
' K& D$ U3 a. f/ B {1 w. b" Y' ]* K1 H2 b. z* q) D
Console.WriteLine($"客户进入: {connId}");5 Z( {7 A: A m$ `8 l3 C# C5 g
' B c% e0 D% V7 x i5 v4 b; S, n
// 发送欢迎消息给客户端
1 |' w1 w( W* C1 t8 e9 R" q( {+ ?8 @2 Y5 p1 K( z) k
4 X$ z& W5 x8 V) X+ T8 a
//server.Send(connId, "Welcome to SSL server!");6 ?, `. D$ V8 |2 _4 A1 a
return (0);* q+ ?, E M9 P* x& R
};5 _; [6 @3 ^4 \1 s: S L/ } Y
server.OnReceive += (sender, connId, data) =>1 v8 j) F/ }* t3 t8 `% T
{+ S+ u$ I! n- C7 Y# z- U4 R8 C
Console.WriteLine($"数据到达: {connId}, data: {data}");1 U/ I0 Y4 U: a& r8 U/ x0 ]6 F
return (0);) P: t8 T7 U% h0 X" {
};/ U: @+ P; h4 S, N2 E; J7 v
server.OnClose += (sender, connId, operation, errorCode) =>0 \7 `0 S' Z7 B6 t* e; t+ ]( K
{1 U5 S8 {# N0 @$ k; L+ C
Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");. e2 B- i. j8 g6 m, u1 J8 L: M% o
t& V% o7 s9 I return (0);
# Q5 ]* B) j8 Q0 F };. @ k/ j! b2 |$ L1 F) ^* q) r z
$ g! f' R( B3 b) {4 m! C2 q# r" ~7 J
]. [9 ?4 ?. G, @9 m3 V3 u2 u; S9 T: v7 ?: {% n
6 b5 N7 O8 o' G/ y" C o, T! v : n3 p7 S' _2 U0 {
3 ^+ ?, h6 D* T+ a. N+ I: O4 }
// 等待客户端连接并收发数据
, ]: f4 l* _) O3 d5 f Console.ReadKey();
2 W& V& I7 [+ w; e
+ g/ a: q2 f" Z L // 停止服务端
& {4 E/ J/ V% m( t$ r server.Stop();
' X% @9 L9 d9 P5 b$ b$ m* V }
7 \; z+ ?( q+ U2 j9 m& P }
* D; s% R! T1 V7 @7 j}
( W. ~( F6 x; ~# n5 d' w3 e9 e9 D2 {5 F. A, R
7 Q# q& E F, ^9 \/ n |
|