1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
void connect()
{
struct sockaddr_in spls;
spls.sin_family = AF_INET;
spls.sin_port = htons(1935);
inet_aton(_ip, &spls.sin_addr);
// Non bloking socket
fcntl(_sockfd, F_SETFL, fcntl(_sockfd, F_GETFL) | O_NONBLOCK);
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0){
perror("sock desc failed");
}
struct timeval tv;
tv.tv_sec = 5; /* 5 Secs Timeout */
tv.tv_usec = 0; // Not init'ing this can cause strange errors
setsockopt(_sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv,sizeof(struct timeval));
int n = 1;
// ignore broken pipe
setsockopt(self->_sockfd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&n, sizeof(n));
// Naggle on/off
//setsockopt(_sockfd, IPPROTO_TCP, TCP_NODELAY, (void*)&n, sizeof(n));
if(connect(_sockfd, (struct sockaddr*)&spls, sizeof(struct sockaddr)) < 0){
perror("connect rtcp announce failed");
}
}
// et pour la partie envoi/monitoring :
if( (x=send(_sockfd,finalPacket,cBytes,0) < 0))
{
perror("fail sending v_packet");
}
fd_set fdWrite;
FD_ZERO(&fdWrite);
FD_SET(_sockfd, &fdWrite);
int retVal = select(_sockfd+1, NULL, &fdWrite, NULL, NULL);
if(retVal==1)
{
effective_bitrate += cBytes;
} |
Partager