Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
colorEagleStdio
zoompipeline
提交
5065d4de
zoompipeline
项目概览
colorEagleStdio
/
zoompipeline
通知
181
Star
12
Fork
4
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
zoompipeline
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
5065d4de
编写于
12月 18, 2013
作者:
丁劲犇
😸
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Switch the TCP socket to SSL Socket.
上级
a43abd8f
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
145 addition
and
54 deletion
+145
-54
QTcpClientTest/qghtcpclient.cpp
QTcpClientTest/qghtcpclient.cpp
+37
-37
QTcpClientTest/qghtcpclient.h
QTcpClientTest/qghtcpclient.h
+10
-10
QTcpClientTest/qtcpclienttest.cpp
QTcpClientTest/qtcpclienttest.cpp
+9
-2
ZoomPipeline_FuncSvr/network/zp_nettransthread.cpp
ZoomPipeline_FuncSvr/network/zp_nettransthread.cpp
+44
-4
ZoomPipeline_FuncSvr/network/zp_nettransthread.h
ZoomPipeline_FuncSvr/network/zp_nettransthread.h
+5
-0
ZoomPipeline_FuncSvr/zpmainframe.cpp
ZoomPipeline_FuncSvr/zpmainframe.cpp
+2
-1
cert.pem
cert.pem
+38
-0
未找到文件。
QTcpClientTest/qghtcpclient.cpp
浏览文件 @
5065d4de
...
...
@@ -2,12 +2,12 @@
#include <assert.h>
QGHTcpClient
::
QGHTcpClient
(
QObject
*
parent
,
int
nPayLoad
)
:
QTcp
Socket
(
parent
),
m_nPayLoad
(
nPayLoad
)
:
QSsl
Socket
(
parent
),
m_nPayLoad
(
nPayLoad
)
{
assert
(
m_nPayLoad
>=
256
&&
m_nPayLoad
<=
16
*
1024
*
1024
);
connect
(
this
,
SIGNAL
(
bytesWritten
(
qint64
)),
this
,
SLOT
(
some_data_sended
(
qint64
)));
assert
(
m_nPayLoad
>=
256
&&
m_nPayLoad
<=
16
*
1024
*
1024
);
connect
(
this
,
SIGNAL
(
bytesWritten
(
qint64
)),
this
,
SLOT
(
some_data_sended
(
qint64
)));
}
...
...
@@ -17,41 +17,41 @@ QGHTcpClient::~QGHTcpClient()
}
void
QGHTcpClient
::
some_data_sended
(
qint64
wsended
)
{
while
(
m_buffer_sending
.
empty
()
==
false
)
{
QByteArray
&
arraySending
=
*
m_buffer_sending
.
begin
();
qint64
&
currentOffset
=
*
m_buffer_sending_offset
.
begin
();
qint64
nTotalBytes
=
arraySending
.
size
();
assert
(
nTotalBytes
>=
currentOffset
);
qint64
nBytesWritten
=
write
(
arraySending
.
constData
()
+
currentOffset
,
qMin
((
int
)(
nTotalBytes
-
currentOffset
),
m_nPayLoad
));
currentOffset
+=
nBytesWritten
;
if
(
currentOffset
>=
nTotalBytes
)
{
m_buffer_sending
.
pop_front
();
m_buffer_sending_offset
.
pop_front
();
}
else
break
;
}
while
(
m_buffer_sending
.
empty
()
==
false
)
{
QByteArray
&
arraySending
=
*
m_buffer_sending
.
begin
();
qint64
&
currentOffset
=
*
m_buffer_sending_offset
.
begin
();
qint64
nTotalBytes
=
arraySending
.
size
();
assert
(
nTotalBytes
>=
currentOffset
);
qint64
nBytesWritten
=
write
(
arraySending
.
constData
()
+
currentOffset
,
qMin
((
int
)(
nTotalBytes
-
currentOffset
),
m_nPayLoad
));
currentOffset
+=
nBytesWritten
;
if
(
currentOffset
>=
nTotalBytes
)
{
m_buffer_sending
.
pop_front
();
m_buffer_sending_offset
.
pop_front
();
}
else
break
;
}
}
void
QGHTcpClient
::
SendData
(
QByteArray
dtarray
)
{
if
(
dtarray
.
size
())
{
if
(
m_buffer_sending
.
empty
()
==
true
)
{
qint64
bytesWritten
=
write
(
dtarray
.
constData
(),
qMin
(
dtarray
.
size
(),
m_nPayLoad
));
if
(
bytesWritten
<
dtarray
.
size
())
{
m_buffer_sending
.
push_back
(
dtarray
);
m_buffer_sending_offset
.
push_back
(
bytesWritten
);
}
}
else
{
m_buffer_sending
.
push_back
(
dtarray
);
m_buffer_sending_offset
.
push_back
(
0
);
}
}
if
(
dtarray
.
size
())
{
if
(
m_buffer_sending
.
empty
()
==
true
)
{
qint64
bytesWritten
=
write
(
dtarray
.
constData
(),
qMin
(
dtarray
.
size
(),
m_nPayLoad
));
if
(
bytesWritten
<
dtarray
.
size
())
{
m_buffer_sending
.
push_back
(
dtarray
);
m_buffer_sending_offset
.
push_back
(
bytesWritten
);
}
}
else
{
m_buffer_sending
.
push_back
(
dtarray
);
m_buffer_sending_offset
.
push_back
(
0
);
}
}
}
QTcpClientTest/qghtcpclient.h
浏览文件 @
5065d4de
#
ifndef
QGHTCPCLIENT_H
#define QGHTCPCLIENT_H
#include <Q
Tcp
Socket>
#include <Q
Ssl
Socket>
#include <QList>
class
QGHTcpClient
:
public
Q
Tcp
Socket
class
QGHTcpClient
:
public
Q
Ssl
Socket
{
Q_OBJECT
Q_OBJECT
public:
QGHTcpClient
(
QObject
*
parent
,
int
nPayLoad
=
4096
);
~
QGHTcpClient
();
QGHTcpClient
(
QObject
*
parent
,
int
nPayLoad
=
4096
);
~
QGHTcpClient
();
private:
int
m_nPayLoad
;
QList
<
QByteArray
>
m_buffer_sending
;
QList
<
qint64
>
m_buffer_sending_offset
;
int
m_nPayLoad
;
QList
<
QByteArray
>
m_buffer_sending
;
QList
<
qint64
>
m_buffer_sending_offset
;
public
slots
:
void
some_data_sended
(
qint64
);
void
SendData
(
QByteArray
dtarray
);
void
some_data_sended
(
qint64
);
void
SendData
(
QByteArray
dtarray
);
};
...
...
QTcpClientTest/qtcpclienttest.cpp
浏览文件 @
5065d4de
#
include
"qtcpclienttest.h"
#include <QSettings>
#include <QCoreApplication>
QTcpClientTest
::
QTcpClientTest
(
QWidget
*
parent
,
Qt
::
WindowFlags
flags
)
:
QMainWindow
(
parent
,
flags
)
{
...
...
@@ -116,13 +117,19 @@ void QTcpClientTest::timerEvent(QTimerEvent * evt)
}
}
QGHTcpClient
*
client
=
new
QGHTcpClient
(
this
,
ui
.
horizontalSlider
->
value
());
client
->
connectToHost
(
ui
.
lineEdit_ip
->
text
(),
ui
.
lineEdit_Port
->
text
().
toUShort
());
//
client->connectToHost(ui.lineEdit_ip->text(),ui.lineEdit_Port->text().toUShort());
m_clients
[
client
]
=
QDateTime
::
currentDateTime
();
connect
(
client
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
new_data_recieved
()));
connect
(
client
,
SIGNAL
(
connected
()),
this
,
SLOT
(
on_client_connected
()));
//
connect(client, SIGNAL(connected()),this, SLOT(on_client_connected()));
connect
(
client
,
SIGNAL
(
disconnected
()),
this
,
SLOT
(
on_client_disconnected
()));
connect
(
client
,
SIGNAL
(
error
(
QAbstractSocket
::
SocketError
)),
this
,
SLOT
(
displayError
(
QAbstractSocket
::
SocketError
)));
connect
(
client
,
SIGNAL
(
bytesWritten
(
qint64
)),
this
,
SLOT
(
on_client_trasferred
(
qint64
)));
connect
(
client
,
SIGNAL
(
encrypted
()),
this
,
SLOT
(
on_client_connected
()));
QString
strCerPath
=
QCoreApplication
::
applicationDirPath
()
+
"/cert.pem"
;
client
->
setLocalCertificate
(
strCerPath
);
client
->
setPrivateKey
(
strCerPath
);
client
->
setPeerVerifyMode
(
QSslSocket
::
VerifyNone
);
client
->
connectToHostEncrypted
(
ui
.
lineEdit_ip
->
text
(),
ui
.
lineEdit_Port
->
text
().
toUShort
());
}
}
}
...
...
ZoomPipeline_FuncSvr/network/zp_nettransthread.cpp
浏览文件 @
5065d4de
#include "zp_nettransthread.h"
#include <QTcpSocket>
#include <QSslSocket>
#include <assert.h>
#include <QDebug>
#include <QCoreApplication>
zp_netTransThread
::
zp_netTransThread
(
int
nPayLoad
,
QObject
*
parent
)
:
QObject
(
parent
)
{
m_nPayLoad
=
nPayLoad
;
m_bActivated
=
true
;
m_bSSLConnection
=
true
;
assert
(
m_nPayLoad
>=
256
&&
m_nPayLoad
<=
16
*
1024
*
1024
);
}
QList
<
QObject
*>
zp_netTransThread
::
clientsList
()
...
...
@@ -43,7 +47,11 @@ void zp_netTransThread::incomingConnection(QObject * threadid,qintptr socketDesc
{
if
(
threadid
!=
this
)
return
;
QTcpSocket
*
sock_client
=
new
QTcpSocket
(
this
);
QTcpSocket
*
sock_client
=
0
;
if
(
m_bSSLConnection
)
sock_client
=
new
QSslSocket
(
this
);
else
sock_client
=
new
QTcpSocket
(
this
);
if
(
sock_client
)
{
if
(
true
==
sock_client
->
setSocketDescriptor
(
socketDescriptor
))
...
...
@@ -55,25 +63,56 @@ void zp_netTransThread::incomingConnection(QObject * threadid,qintptr socketDesc
m_mutex_protect
.
lock
();
m_clientList
[
sock_client
]
=
0
;
m_mutex_protect
.
unlock
();
emit
evt_NewClientConnected
(
sock_client
);
if
(
m_bSSLConnection
)
{
QSslSocket
*
psslsock
=
qobject_cast
<
QSslSocket
*>
(
sock_client
);
assert
(
psslsock
!=
nullptr
);
QList
<
QSslCertificate
>
lstCerts
=
(
QSslSocket
::
defaultCaCertificates
());
if
(
lstCerts
.
size
())
{
QString
strCerPath
=
QCoreApplication
::
applicationDirPath
()
+
"/cert.pem"
;
psslsock
->
setLocalCertificate
(
strCerPath
);
psslsock
->
setPrivateKey
(
strCerPath
);
}
connect
(
psslsock
,
&
QSslSocket
::
encrypted
,
this
,
&
zp_netTransThread
::
on_encrypted
);
psslsock
->
startServerEncryption
();
}
else
emit
evt_NewClientConnected
(
sock_client
);
}
else
sock_client
->
deleteLater
();
}
}
void
zp_netTransThread
::
on_encrypted
()
{
QTcpSocket
*
pSock
=
qobject_cast
<
QTcpSocket
*>
(
sender
());
emit
evt_NewClientConnected
(
pSock
);
}
void
zp_netTransThread
::
client_closed
()
{
QTcpSocket
*
pSock
=
qobject_cast
<
QTcpSocket
*>
(
sender
());
if
(
pSock
)
{
emit
evt_ClientDisconnected
(
pSock
);
m_buffer_sending
.
remove
(
pSock
);
if
(
m_bSSLConnection
)
{
QSslSocket
*
psslsock
=
qobject_cast
<
QSslSocket
*>
(
pSock
);
if
(
psslsock
)
disconnect
(
psslsock
,
&
QSslSocket
::
encrypted
,
this
,
&
zp_netTransThread
::
on_encrypted
);
}
disconnect
(
pSock
,
SIGNAL
(
readyRead
()),
this
,
SLOT
(
new_data_recieved
()));
disconnect
(
pSock
,
SIGNAL
(
disconnected
()),
this
,
SLOT
(
client_closed
()));
disconnect
(
pSock
,
SIGNAL
(
error
(
QAbstractSocket
::
SocketError
)),
this
,
SLOT
(
displayError
(
QAbstractSocket
::
SocketError
)));
disconnect
(
pSock
,
SIGNAL
(
bytesWritten
(
qint64
)),
this
,
SLOT
(
some_data_sended
(
qint64
)));
m_buffer_sending
.
remove
(
pSock
);
m_buffer_sending_offset
.
remove
(
pSock
);
m_mutex_protect
.
lock
();
m_clientList
.
remove
(
pSock
);
m_mutex_protect
.
unlock
();
pSock
->
deleteLater
();
emit
evt_ClientDisconnected
(
pSock
);
}
}
void
zp_netTransThread
::
new_data_recieved
()
...
...
@@ -114,6 +153,7 @@ void zp_netTransThread::displayError(QAbstractSocket::SocketError socketError)
if
(
pSock
)
{
emit
evt_SocketError
(
pSock
,
socketError
);
qDebug
()
<<
(
pSock
->
errorString
());
pSock
->
disconnectFromHost
();
}
}
...
...
ZoomPipeline_FuncSvr/network/zp_nettransthread.h
浏览文件 @
5065d4de
...
...
@@ -18,9 +18,12 @@ public:
bool
isActive
(){
return
m_bActivated
;}
bool
CanExit
();
bool
SSLConnection
(){
return
m_bSSLConnection
;}
void
SetSSLConnection
(
bool
bssl
){
m_bSSLConnection
=
bssl
;}
private:
bool
m_bActivated
;
bool
m_bSSLConnection
;
QMap
<
QObject
*
,
QList
<
QByteArray
>
>
m_buffer_sending
;
QMap
<
QObject
*
,
QList
<
qint64
>
>
m_buffer_sending_offset
;
QMap
<
QObject
*
,
int
>
m_clientList
;
...
...
@@ -48,6 +51,8 @@ protected slots:
void
some_data_sended
(
qint64
);
//客户端错误
void
displayError
(
QAbstractSocket
::
SocketError
socketError
);
//SSL加密开始
void
on_encrypted
();
signals:
//错误信息
void
evt_SocketError
(
QObject
*
senderSock
,
QAbstractSocket
::
SocketError
socketError
);
...
...
ZoomPipeline_FuncSvr/zpmainframe.cpp
浏览文件 @
5065d4de
#include "zpmainframe.h"
#include "ui_zpmainframe.h"
ZPMainFrame
::
ZPMainFrame
(
QWidget
*
parent
)
:
QMainWindow
(
parent
),
ui
(
new
Ui
::
ZPMainFrame
)
{
ui
->
setupUi
(
this
);
m_pool
=
new
zp_net_ThreadPool
(
4096
);
connect
(
m_pool
,
&
zp_net_ThreadPool
::
evt_Message
,
this
,
&
ZPMainFrame
::
on_evt_Message
);
...
...
cert.pem
0 → 100644
浏览文件 @
5065d4de
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDRY4hWKwxi2Hz+snTuzcXg6KOH0Hv5Yz+B9pHc/J3V7J4uOERT
kjTWE8ef6WvNMqcEypWk3RKVZPm7sqU8mOdVJsY6z9gYGyBd6OIpISCzE5W/qRYg
Ld3Ze9oPaF8NZ+kmzgynwohtfvm5IKGWOq0B0Tjd/jJ+H1aGCgg1B7BU3QIDAQAB
AoGBALz9KUEc+cD9xVPdns0rzT6Cu5cKBdvCSL/03RKor402VE9DWehUPnw6viMH
e9VpsnYQo6B6KRvOV9miFKHtIF2HL16/IYG20LEAhUoAOL5jUi8D4D1b+a4TQMbB
oQsPS3ybQc4xUbuoipZjRnZ67HdiNNcbUoRxpfKrdQKboCYBAkEA/iT8gYXuSTnf
Mc6Xod9TTe2sEg23PMLqMZoqvmUrKoFcPGNs6+N/L1nay97r1WrHWV5XOD/NMe9N
rBU/bFeFWQJBANLq5Q4hIk4vcht0d14k65hv1tXpLMi0aHuOpq3R8YqnpzmExBG1
+nQos69qixc02qNs3uv9xXmmNvnbN3TVpyUCQQDRUfFPVNowIaQ9R6UIRAI+2xSw
Qe+78eYmOI4gBv+IoMcxTcq2dseYXm+hHtgrDSln6BX6VEJTcIAOzelQ+LzxAkAw
JvRYP3RHiUlxvyspUSCAUrgnae6Re66G1tByyoVsdE4XMZpZuMQPFOPA3oAWsjhg
KxDRq8QTu8C9VjDY+ZYJAkAdl+S7FWNjOGfqLtlh6uFDdiR+xL5eIdlBbJ9KEf6W
u3QUKbAOmNEbzOfIMbLTCs8NpfMA+naccG8RM320OXG7
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDyDCCAzGgAwIBAgIJALKsuIO3TaLPMA0GCSqGSIb3DQEBBQUAMIGfMQswCQYD
VQQGEwJaSDERMA8GA1UECBMIU2hhbmdIYWkxEDAOBgNVBAcTB2Jhb1NoYW4xGzAZ
BgNVBAoTEmdvbGRlbmhhd2tpbmcgQ2x1YjEQMA4GA1UECxMHRGV2IFNlYzEWMBQG
A1UEAxMNZ29sZGVuaGF3a2luZzEkMCIGCSqGSIb3DQEJARYVZ29sZGVuaGF3a2lu
Z0AxNjMuY29tMB4XDTEzMTIxNzE1MTgxNFoXDTE0MTIxNzE1MTgxNFowgZ8xCzAJ
BgNVBAYTAlpIMREwDwYDVQQIEwhTaGFuZ0hhaTEQMA4GA1UEBxMHYmFvU2hhbjEb
MBkGA1UEChMSZ29sZGVuaGF3a2luZyBDbHViMRAwDgYDVQQLEwdEZXYgU2VjMRYw
FAYDVQQDEw1nb2xkZW5oYXdraW5nMSQwIgYJKoZIhvcNAQkBFhVnb2xkZW5oYXdr
aW5nQDE2My5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANFjiFYrDGLY
fP6ydO7NxeDoo4fQe/ljP4H2kdz8ndXsni44RFOSNNYTx5/pa80ypwTKlaTdEpVk
+buypTyY51UmxjrP2BgbIF3o4ikhILMTlb+pFiAt3dl72g9oXw1n6SbODKfCiG1+
+bkgoZY6rQHRON3+Mn4fVoYKCDUHsFTdAgMBAAGjggEIMIIBBDAdBgNVHQ4EFgQU
7xh0gtHykh9T8T5a8Tu7nibdnQQwgdQGA1UdIwSBzDCByYAU7xh0gtHykh9T8T5a
8Tu7nibdnQShgaWkgaIwgZ8xCzAJBgNVBAYTAlpIMREwDwYDVQQIEwhTaGFuZ0hh
aTEQMA4GA1UEBxMHYmFvU2hhbjEbMBkGA1UEChMSZ29sZGVuaGF3a2luZyBDbHVi
MRAwDgYDVQQLEwdEZXYgU2VjMRYwFAYDVQQDEw1nb2xkZW5oYXdraW5nMSQwIgYJ
KoZIhvcNAQkBFhVnb2xkZW5oYXdraW5nQDE2My5jb22CCQCyrLiDt02izzAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAH8AWUZ5ee9mbkW/JEhuOAyBkfsQ
4VkYAXRCWG7+EXmAY54GnGogqUKnEq7x8ndRhFLQP9AiLIvQuCMP07U4x65K73I1
lvCKdQt4u3lvlP5RxrfDMzzMdsus834+mAsLKWIiYRwK89aOC60+PvyoyNcO3n1r
hxv6lPA3XuGYAcjo
-----END CERTIFICATE-----
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录