Changeset 46
- Timestamp:
- 05/04/08 16:53:35
(4 months ago)
- Author:
- sip
- Message:
Added multicast support
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r2 |
r46 |
|
| 1 | 1 | #include <sys/socket.h> |
|---|
| | 2 | #include <sys/types.h> |
|---|
| 2 | 3 | #include <netinet/in.h> |
|---|
| 3 | 4 | #include <arpa/inet.h> |
|---|
| … | … | |
| 82 | 83 | int RTPSession::Init() |
|---|
| 83 | 84 | { |
|---|
| | 85 | Log(">Init RTPSession\n"); |
|---|
| | 86 | |
|---|
| 84 | 87 | struct sockaddr_in sendAddr; |
|---|
| 85 | 88 | socklen_t len; |
|---|
| | 89 | int optval = 1; |
|---|
| 86 | 90 | |
|---|
| 87 | 91 | /* empty addres */ |
|---|
| … | … | |
| 90 | 94 | sendAddr.sin_family = AF_INET; |
|---|
| 91 | 95 | |
|---|
| 92 | | /* Create sockets */ |
|---|
| | 96 | // Create sockets |
|---|
| 93 | 97 | simSocket = socket(PF_INET,SOCK_DGRAM,0); |
|---|
| | 98 | // set SO_REUSEADDR on a socket to true (1): |
|---|
| | 99 | setsockopt(simSocket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); |
|---|
| | 100 | //Bind |
|---|
| 94 | 101 | bind(simSocket,(struct sockaddr *)&sendAddr,sizeof(struct sockaddr_in)); |
|---|
| | 102 | |
|---|
| | 103 | // Open next socket |
|---|
| 95 | 104 | simRtcpSocket = socket(PF_INET,SOCK_DGRAM,0); |
|---|
| | 105 | // set SO_REUSEADDR on a socket to true (1): |
|---|
| | 106 | setsockopt(simRtcpSocket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); |
|---|
| | 107 | // Bind |
|---|
| 96 | 108 | bind(simRtcpSocket,(struct sockaddr *)&sendAddr,sizeof(struct sockaddr_in)); |
|---|
| 97 | 109 | |
|---|
| … | … | |
| 115 | 127 | /* Create new socket */ |
|---|
| 116 | 128 | simRtcpSocket = socket(PF_INET,SOCK_DGRAM,0); |
|---|
| | 129 | // set SO_REUSEADDR on a socket to true (1): |
|---|
| | 130 | setsockopt(simRtcpSocket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); |
|---|
| 117 | 131 | /* Get port */ |
|---|
| 118 | 132 | sendAddr.sin_port = htons(0); |
|---|
| … | … | |
| 123 | 137 | } |
|---|
| 124 | 138 | |
|---|
| | 139 | Log("<Init RTPSession\n"); |
|---|
| | 140 | |
|---|
| 125 | 141 | //Opened |
|---|
| 126 | 142 | return 1; |
|---|
| … | … | |
| 220 | 236 | int RTPSession::GetVideoPacket(BYTE *data,DWORD *size,BYTE *last,BYTE *lost,BYTE *type) |
|---|
| 221 | 237 | { |
|---|
| | 238 | sockaddr_in from_addr; |
|---|
| | 239 | DWORD from_len = sizeof(from_addr); |
|---|
| | 240 | |
|---|
| 222 | 241 | //Esperamos |
|---|
| 223 | 242 | if(!WaitForSocket(simSocket,1)) |
|---|
| … | … | |
| 225 | 244 | return 0; |
|---|
| 226 | 245 | |
|---|
| | 246 | //Receive from everywhere |
|---|
| | 247 | memset(&from_addr, 0, from_len); |
|---|
| | 248 | |
|---|
| 227 | 249 | //Leemos del socket |
|---|
| 228 | | int num = recv(simSocket,recBuffer,MTU,0); |
|---|
| | 250 | int num = recvfrom(simSocket,recBuffer,MTU,0,(sockaddr*)&from_addr, &from_len); |
|---|
| 229 | 251 | |
|---|
| 230 | 252 | //Comprobamos que nos haya devuelto algo |
|---|
| … | … | |
| 318 | 340 | int RTPSession::GetAudioPacket(BYTE *data,DWORD *size,BYTE *lost,BYTE *type,DWORD *timestamp) |
|---|
| 319 | 341 | { |
|---|
| | 342 | sockaddr_in from_addr; |
|---|
| | 343 | DWORD from_len = sizeof(from_addr); |
|---|
| | 344 | |
|---|
| 320 | 345 | //Esperamos |
|---|
| 321 | 346 | if(!WaitForSocket(simSocket,1)) |
|---|
| … | … | |
| 323 | 348 | return 0; |
|---|
| 324 | 349 | |
|---|
| | 350 | //Receive from everywhere |
|---|
| | 351 | memset(&from_addr, 0, from_len); |
|---|
| | 352 | |
|---|
| 325 | 353 | //Leemos del socket |
|---|
| 326 | | int num = recv(simSocket,recBuffer,MTU,0); |
|---|
| | 354 | int num = recvfrom(simSocket,recBuffer,MTU,0,(sockaddr*)&from_addr, &from_len); |
|---|
| 327 | 355 | |
|---|
| 328 | 356 | //Comprobamos que nos haya devuelto algo |
|---|
Download in other formats:
|
|