|
悬赏5金钱未解决
TCP服务端能正常连接,但是SSL服务端连接怎么都有问题,连接进入马上就断开了,错误代码13
) M$ U. `" j* \$ J2 v7 f% J4 O- L% a. c5 ?
7 Y$ W5 t8 v% ~# P& }using System;3 a( r0 ^% J) h+ I) E
using System.Threading.Tasks;: L+ T3 h7 g# r" ^" i$ T
using HPSocket;/ v4 W7 F: D" F; X* ]8 v) h
using HPSocket.Ssl;" s6 U7 M0 I) o% v$ f
using HPSocket.Tcp;8 `/ j9 Y+ Q* Z% h- a
: t5 b% Z. X( i4 v
namespace SslServerDemo+ a1 n9 B0 N1 D7 k( |! p, F0 G' h
{; B9 A; C2 J }0 z0 [
class Program
# q: l" e6 o% y g# v5 A) i$ m* }6 k {/ f8 q7 C8 D2 E1 `$ V
static void Main(string[] args)% V2 H4 h6 v: V# R
{
! {2 w, v) d) x' h$ k // 创建SSL服务端! [5 P# l1 E; L% V+ H0 p
//var server = new SslServer();
. ]: j( T% R8 ]0 q& l4 ?5 e ISslServer server = new SslServer(); 5 z7 C0 c5 D5 s7 V0 w
2 M; j" o8 ]8 | // 设置证书和私钥
5 c, ?7 H4 S7 l! V2 I9 [ 6 G3 K2 N+ H5 [( M! B- c0 t. D
server.Initialize(false);
' p. @1 x, O( {0 q$ c7 _' x6 } server.VerifyMode = SslVerifyMode.None;
7 p% |( D' O: g/ T& n server.PemCertFile = "D:/cxiapu/zs/server.crt";
; o% u7 J+ T8 ] A, ~4 s2 v3 [" L8 r server.PemKeyFile = "D:/cxiapu/zs/server.key";
1 b$ M: \3 I7 F server.KeyPassword = "mwyfeeq568";
8 K5 H! W$ j9 H& P) C/ R: R server.CaPemCertFileOrPath = "D:/cxiapu/zs/ca.crt";
7 E2 ` F5 b2 [2 O2 X" B
. A! i: w: b% x //server.AddContext(SslVerifyMode.None, "D:/cxiapu/zs/server.crt", "D:/cxiapu/zs/server.key", "mwyfeeq568", "D:/cxiapu/zs/ca.crt");8 J, v4 P3 b' \# a
server.Address = "0.0.0.0";
# n4 |0 `% N u9 y server.Port = 5001;
, X+ G' |! m, O7 F7 u; X+ h2 U+ D' O! B; v
// 启动服务端
# p( }4 o I% @+ [; e+ m; {7 _9 D- @ Console.WriteLine(server.Start());
, o# x$ K0 w m2 M! w( V Console.WriteLine("SSL服务启动 127.0.0.1:5001");
+ N4 z0 T4 c( K! E. O$ X
& K# R( P1 V# a1 P/ Z/ I
8 y S# C2 |' V9 [; K/ q/ S I( S* p# f* B8 z9 e: A
, A* H2 Q* k. f2 R3 V {
& f+ D* z! i3 A) a8 H' d" v // 设置事件回调
/ I) g _+ Y# Y( [! B C6 _, w
( {- @0 z8 g9 q) l% c server.OnSend += (sender, connId, data) =>) h' \& S( F' f1 Y) Y; S; B
{ R! R* w* G: T% N/ L) P, r
Console.WriteLine("发送事件");; w1 y- \ f* V! C
5 P" t' M' c0 B- f0 O7 e$ V
' ?2 n0 _6 V) C3 Y. y* u
return (0); 6 A: Z: Y% @6 Z5 Q; f& a
};8 g1 L8 H! {" k9 S( t8 C9 h
# t) h0 M! ?) L& O
server.OnHandShake += (sender, connId) =>
* Z8 u( b7 a, ~# \# l {, z- w' T6 D- M# f4 b& S
6 p2 n9 f* f; p. S8 g8 L Console.WriteLine($"握手事件"); v8 w9 r6 U6 @
return (0);
+ T- X i. A7 \ }; A9 ^* K& S2 {# A/ R( J
% H/ i0 n3 C! c
: K" P% J0 o8 ]/ H7 B, C* e server.OnAccept += (sender, connId, client) =>' d7 t: a) s" Q; I: b; T4 S
{3 I- v/ I' H) ?8 W7 {: N
Console.WriteLine($"客户进入: {connId}");. E, ]0 R1 g1 V; s/ X
7 x. |1 {+ f! k! w9 L2 W // 发送欢迎消息给客户端8 d2 I+ b/ C4 t2 o- Y; H
9 z5 p7 ?3 ?6 t6 ]! Y+ c; n
% `. T1 {! ~& T, D: A9 o
//server.Send(connId, "Welcome to SSL server!");
# I/ T9 Y/ N! g; T5 ~2 E% a return (0);, q* q: C+ R0 v$ U1 c
};- X+ {- W) L0 N$ y* i# P" s4 ]
server.OnReceive += (sender, connId, data) =>4 g( E6 d0 R F' Y: @* e" D" ]: ~
{/ _) ^+ f+ O0 c/ N1 A& L3 @
Console.WriteLine($"数据到达: {connId}, data: {data}");6 w" E, K( K: D# u
return (0);
2 O; {& ^+ V" A* l* t0 n5 ~ };$ N$ T4 E9 }& e. }1 p! c
server.OnClose += (sender, connId, operation, errorCode) =>: Y7 R& _2 s% g# |
{6 N( o; M2 [! Y" d, O
Console.WriteLine($"客户断开:{connId}错误代码:{errorCode}");
) }2 v$ N1 P/ T6 i
" F" Y- N& S; j' a- x return (0);
u; A' L0 w* d# ^0 ~ };
. d9 Q3 {7 b& X8 C
' {/ |) P1 ]. }1 e" D p4 J6 W* X1 a; y% Y$ Y# {/ N
- f7 I* J7 b2 Q! U, {6 m: D8 N
: ^9 ^) P! v) Y1 q
/ }! t# j5 r0 b8 S- q, Z4 ^0 ], l& G; E8 K
// 等待客户端连接并收发数据
$ i" U) Y& z: C' R( \' I: M Console.ReadKey();
8 G8 C! Z- p3 r2 n- ~; E2 [! s8 N7 `0 u
// 停止服务端% { l3 o& Z4 i0 ~- ]' S0 h
server.Stop();
" l0 ?- k9 p" E6 |$ l$ f }* U; X0 I! K1 ?* A G7 _1 P
}8 S7 \3 B s, M0 m
}. P! U5 L) j9 e, y: ~ [* l c
, O. \4 q2 [5 w6 j# O; ~2 x3 m
& Y& }% |& a0 V' m |
|