Commit 7d529db7143a8f64098ded6351d397986738b11b

Authored by Hu Chunming
1 parent 6c1a5cc0

修复端口分配问题

src/decoder/gb28181/rtp2/RTPReceiver2.cpp
@@ -56,7 +56,7 @@ void RTPReceiver2::SetVodEndCallback(CallBack_VodFileEnd cb, void* param) @@ -56,7 +56,7 @@ void RTPReceiver2::SetVodEndCallback(CallBack_VodFileEnd cb, void* param)
56 bool RTPReceiver2::Open(string channel_id, bool isUdp) { 56 bool RTPReceiver2::Open(string channel_id, bool isUdp) {
57 m_SipChannelId = channel_id; 57 m_SipChannelId = channel_id;
58 58
59 - m_rtp_port = allocRtpPort(); 59 + m_rtp_port = allocRtpPort(isUdp);
60 if (m_rtp_port < 0) { 60 if (m_rtp_port < 0) {
61 return false; 61 return false;
62 } 62 }
@@ -313,7 +313,7 @@ void RTPReceiver2::parseTcpData(uint8_t* recvBuf, int recvBufSize) { @@ -313,7 +313,7 @@ void RTPReceiver2::parseTcpData(uint8_t* recvBuf, int recvBufSize) {
313 } 313 }
314 } 314 }
315 315
316 -int RTPReceiver2::allocRtpPort() { 316 +int RTPReceiver2::allocRtpPort(bool isUdp) {
317 317
318 WebsocketClient* pServer = WebsocketClient::getInstance(); 318 WebsocketClient* pServer = WebsocketClient::getInstance();
319 int MIN_RTP_PORT = pServer->GetMinRtpPort() ; 319 int MIN_RTP_PORT = pServer->GetMinRtpPort() ;
@@ -342,7 +342,12 @@ int RTPReceiver2::allocRtpPort() { @@ -342,7 +342,12 @@ int RTPReceiver2::allocRtpPort() {
342 int i = 0; 342 int i = 0;
343 for (; i < 2; i++) { 343 for (; i < 2; i++) {
344 sockaddr_in sRecvAddr; 344 sockaddr_in sRecvAddr;
345 - int s = socket(AF_INET, SOCK_DGRAM, 0); 345 + int s = -1;
  346 + if (isUdp) {
  347 + s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  348 + } else {
  349 + s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  350 + }
346 351
347 sRecvAddr.sin_family = AF_INET; 352 sRecvAddr.sin_family = AF_INET;
348 sRecvAddr.sin_addr.s_addr = htonl(INADDR_ANY); 353 sRecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);
src/decoder/gb28181/rtp2/RTPReceiver2.h
@@ -27,7 +27,7 @@ public: @@ -27,7 +27,7 @@ public:
27 27
28 void RequestStreamFailed(); 28 void RequestStreamFailed();
29 29
30 - int allocRtpPort(); 30 + int allocRtpPort(bool isUdp);
31 31
32 public: 32 public:
33 int udp_server(); 33 int udp_server();