From 92736db5b2835c3f631ce14dc2d83f98e16da9c3 Mon Sep 17 00:00:00 2001 From: ziyue <1213642868@qq.com> Date: Tue, 8 Jun 2021 11:29:32 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8Dzltoolkit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3rdpart/ZLToolKit | 2 +- server/WebApi.cpp | 9 ++++++--- src/Http/WebSocketSession.h | 6 +++--- src/Rtp/RtpSender.cpp | 2 +- src/Rtp/RtpSession.cpp | 4 ++-- src/Rtp/RtpSession.h | 2 +- src/Rtsp/RtpMultiCaster.cpp | 2 +- src/Rtsp/RtspPlayer.cpp | 4 ++-- src/Rtsp/RtspPusher.cpp | 4 ++-- src/Rtsp/RtspSession.cpp | 8 ++++---- tests/test_wsServer.cpp | 4 ++-- 11 files changed, 25 insertions(+), 22 deletions(-) diff --git a/3rdpart/ZLToolKit b/3rdpart/ZLToolKit index ca4985c2..58d0e6a4 160000 --- a/3rdpart/ZLToolKit +++ b/3rdpart/ZLToolKit @@ -1 +1 @@ -Subproject commit ca4985c2dc34426363c5ab4eb82f941bcd31cdc2 +Subproject commit 58d0e6a4488a290e966b2a0535445dc75af0529c diff --git a/server/WebApi.cpp b/server/WebApi.cpp index cbb2f6d9..2ccb077b 100755 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -25,6 +25,7 @@ #include "Http/HttpRequester.h" #include "Http/HttpSession.h" #include "Network/TcpServer.h" +#include "Network/UdpServer.h" #include "Player/PlayerProxy.h" #include "Util/MD5.h" #include "WebApi.h" @@ -538,7 +539,7 @@ void installWebApi() { uint16_t local_port = allArgs["local_port"].as(); string &peer_ip = allArgs["peer_ip"]; - SessionMap::Instance().for_each_session([&](const string &id,const TcpSession::Ptr &session){ + SessionMap::Instance().for_each_session([&](const string &id,const Session::Ptr &session){ if(local_port != 0 && local_port != session->get_local_port()){ return; } @@ -577,8 +578,8 @@ void installWebApi() { string &peer_ip = allArgs["peer_ip"]; size_t count_hit = 0; - list session_list; - SessionMap::Instance().for_each_session([&](const string &id,const TcpSession::Ptr &session){ + list session_list; + SessionMap::Instance().for_each_session([&](const string &id,const Session::Ptr &session){ if(local_port != 0 && local_port != session->get_local_port()){ return; } @@ -1038,6 +1039,8 @@ void installWebApi() { val["data"]["TcpServer"] = (Json::UInt64)(ObjectStatistic::count()); val["data"]["TcpSession"] = (Json::UInt64)(ObjectStatistic::count()); + val["data"]["UdpServer"] = (Json::UInt64)(ObjectStatistic::count()); + val["data"]["UdpSession"] = (Json::UInt64)(ObjectStatistic::count()); val["data"]["TcpClient"] = (Json::UInt64)(ObjectStatistic::count()); val["data"]["Socket"] = (Json::UInt64)(ObjectStatistic::count()); diff --git a/src/Http/WebSocketSession.h b/src/Http/WebSocketSession.h index d6fb6d4a..03872abf 100644 --- a/src/Http/WebSocketSession.h +++ b/src/Http/WebSocketSession.h @@ -104,9 +104,9 @@ public: } } - void attachServer(const TcpServer &server) override{ + void attachServer(const Server &server) override{ HttpSessionType::attachServer(server); - _weak_server = const_cast(server).shared_from_this(); + _weak_server = const_cast(server).shared_from_this(); } protected: @@ -226,7 +226,7 @@ protected: private: string _payload_cache; string _payload_section; - weak_ptr _weak_server; + weak_ptr _weak_server; TcpSession::Ptr _session; Creator _creator; }; diff --git a/src/Rtp/RtpSender.cpp b/src/Rtp/RtpSender.cpp index 0ca406b1..a0079801 100644 --- a/src/Rtp/RtpSender.cpp +++ b/src/Rtp/RtpSender.cpp @@ -54,7 +54,7 @@ void RtpSender::startSend(const string &dst_url, uint16_t dst_port, bool is_udp, cb(local_port, SockException()); auto strong_self = weak_self.lock(); if (strong_self) { - strong_self->_socket->setSendPeerAddr(&addr); + strong_self->_socket->bindPeerAddr(&addr); strong_self->onConnect(); } }); diff --git a/src/Rtp/RtpSession.cpp b/src/Rtp/RtpSession.cpp index 4eb79120..868f1b51 100644 --- a/src/Rtp/RtpSession.cpp +++ b/src/Rtp/RtpSession.cpp @@ -17,8 +17,8 @@ namespace mediakit{ const string RtpSession::kStreamID = "stream_id"; -void RtpSession::attachServer(const TcpServer &server) { - _stream_id = const_cast(server)[kStreamID]; +void RtpSession::attachServer(const Server &server) { + _stream_id = const_cast(server)[kStreamID]; } RtpSession::RtpSession(const Socket::Ptr &sock) : TcpSession(sock) { diff --git a/src/Rtp/RtpSession.h b/src/Rtp/RtpSession.h index 2999b2b9..9e656d36 100644 --- a/src/Rtp/RtpSession.h +++ b/src/Rtp/RtpSession.h @@ -28,7 +28,7 @@ public: void onRecv(const Buffer::Ptr &) override; void onError(const SockException &err) override; void onManager() override; - void attachServer(const TcpServer &server) override; + void attachServer(const Server &server) override; protected: // 通知其停止推流 diff --git a/src/Rtsp/RtpMultiCaster.cpp b/src/Rtsp/RtpMultiCaster.cpp index 2b2f7eba..36cef4fd 100644 --- a/src/Rtsp/RtpMultiCaster.cpp +++ b/src/Rtsp/RtpMultiCaster.cpp @@ -127,7 +127,7 @@ RtpMultiCaster::RtpMultiCaster(SocketHelper &helper, const string &local_ip, con //组播目标地址 peer.sin_addr.s_addr = htonl(*_multicast_ip); bzero(&(peer.sin_zero), sizeof peer.sin_zero); - _udp_sock[i]->setSendPeerAddr((struct sockaddr *) &peer); + _udp_sock[i]->bindPeerAddr((struct sockaddr *) &peer); } _rtp_reader = src->getRing()->attach(helper.getPoller()); diff --git a/src/Rtsp/RtspPlayer.cpp b/src/Rtsp/RtspPlayer.cpp index f6c461fa..f3b7004f 100644 --- a/src/Rtsp/RtspPlayer.cpp +++ b/src/Rtsp/RtspPlayer.cpp @@ -306,7 +306,7 @@ void RtspPlayer::handleResSETUP(const Parser &parser, unsigned int track_idx) { rtpto.sin_port = ntohs(rtp_port); rtpto.sin_family = AF_INET; rtpto.sin_addr.s_addr = inet_addr(get_peer_ip().data()); - pRtpSockRef->setSendPeerAddr((struct sockaddr *)&(rtpto)); + pRtpSockRef->bindPeerAddr((struct sockaddr *)&(rtpto)); //发送rtp打洞包 pRtpSockRef->send("\xce\xfa\xed\xfe", 4); @@ -314,7 +314,7 @@ void RtspPlayer::handleResSETUP(const Parser &parser, unsigned int track_idx) { rtpto.sin_port = ntohs(rtcp_port); rtpto.sin_family = AF_INET; rtpto.sin_addr.s_addr = inet_addr(get_peer_ip().data()); - pRtcpSockRef->setSendPeerAddr((struct sockaddr *)&(rtpto)); + pRtcpSockRef->bindPeerAddr((struct sockaddr *)&(rtpto)); } auto srcIP = inet_addr(get_peer_ip().data()); diff --git a/src/Rtsp/RtspPusher.cpp b/src/Rtsp/RtspPusher.cpp index c5fb253f..9ce2d56b 100644 --- a/src/Rtsp/RtspPusher.cpp +++ b/src/Rtsp/RtspPusher.cpp @@ -313,13 +313,13 @@ void RtspPusher::handleResSetup(const Parser &parser, unsigned int track_idx) { rtpto.sin_port = ntohs(rtp_port); rtpto.sin_family = AF_INET; rtpto.sin_addr.s_addr = inet_addr(get_peer_ip().data()); - rtp_sock->setSendPeerAddr((struct sockaddr *) &(rtpto)); + rtp_sock->bindPeerAddr((struct sockaddr *) &(rtpto)); //设置rtcp发送目标,为后续发送rtcp做准备 rtpto.sin_port = ntohs(rtcp_port); rtpto.sin_family = AF_INET; rtpto.sin_addr.s_addr = inet_addr(get_peer_ip().data()); - rtcp_sock->setSendPeerAddr((struct sockaddr *)&(rtpto)); + rtcp_sock->bindPeerAddr((struct sockaddr *)&(rtpto)); auto srcIP = inet_addr(get_peer_ip().data()); weak_ptr weakSelf = dynamic_pointer_cast(shared_from_this()); diff --git a/src/Rtsp/RtspSession.cpp b/src/Rtsp/RtspSession.cpp index 40124477..c14a7978 100644 --- a/src/Rtsp/RtspSession.cpp +++ b/src/Rtsp/RtspSession.cpp @@ -686,14 +686,14 @@ void RtspSession::handleReq_Setup(const Parser &parser) { peerAddr.sin_port = htons(ui16RtpPort); peerAddr.sin_addr.s_addr = inet_addr(get_peer_ip().data()); bzero(&(peerAddr.sin_zero), sizeof peerAddr.sin_zero); - pr.first->setSendPeerAddr((struct sockaddr *) (&peerAddr)); + pr.first->bindPeerAddr((struct sockaddr *) (&peerAddr)); //设置rtcp发送目标地址 peerAddr.sin_family = AF_INET; peerAddr.sin_port = htons(ui16RtcpPort); peerAddr.sin_addr.s_addr = inet_addr(get_peer_ip().data()); bzero(&(peerAddr.sin_zero), sizeof peerAddr.sin_zero); - pr.second->setSendPeerAddr((struct sockaddr *) (&peerAddr)); + pr.second->bindPeerAddr((struct sockaddr *) (&peerAddr)); //尝试获取客户端nat映射地址 startListenPeerUdpData(trackIdx); @@ -925,13 +925,13 @@ void RtspSession::onRcvPeerUdpData(int interleaved, const Buffer::Ptr &buf, cons } else if (!_udp_connected_flags.count(interleaved)) { //这是rtsp播放器的rtp打洞包 _udp_connected_flags.emplace(interleaved); - _rtp_socks[interleaved / 2]->setSendPeerAddr(&addr); + _rtp_socks[interleaved / 2]->bindPeerAddr(&addr); } } else { //rtcp包 if (!_udp_connected_flags.count(interleaved)) { _udp_connected_flags.emplace(interleaved); - _rtcp_socks[(interleaved - 1) / 2]->setSendPeerAddr(&addr); + _rtcp_socks[(interleaved - 1) / 2]->bindPeerAddr(&addr); } onRtcpPacket((interleaved - 1) / 2, _sdp_track[(interleaved - 1) / 2], buf->data(), buf->size()); } diff --git a/tests/test_wsServer.cpp b/tests/test_wsServer.cpp index 6590baae..c8e802b5 100644 --- a/tests/test_wsServer.cpp +++ b/tests/test_wsServer.cpp @@ -30,7 +30,7 @@ public: DebugL; } - void attachServer(const TcpServer &server) override{ + void attachServer(const Server &server) override{ DebugL << getIdentifier() << " " << TcpSession::getIdentifier(); } void onRecv(const Buffer::Ptr &buffer) override { @@ -57,7 +57,7 @@ public: DebugL; } - void attachServer(const TcpServer &server) override{ + void attachServer(const Server &server) override{ DebugL << getIdentifier() << " " << TcpSession::getIdentifier(); } void onRecv(const Buffer::Ptr &buffer) override {