Tuesday 11 June 2019

What is WebRTC?


WebRTC

Introduction
WebRTC stands for web real-time communications. It is a very exciting, powerful, and highly disruptive cutting-edge technology and standard. WebRTC leverages a set of plugin-free APIs that can be used in both desktop and mobile browsers, and is progressively becoming supported by all major modern browser vendors. Previously, external plugins were required in order to achieve similar functionality as is offered by WebRTC.
WebRTC leverages multiple standards and protocols, most of which will be discussed in this article. These include data streams, STUN/TURN servers, signaling, JSEP, ICE, SIP, SDP, NAT, UDP/TCP, network sockets, and more.





Peer-To-Peer Communication
WebRTC can be used for multiple tasks, but real-time peer-to-peer audio and video (i.e., multimedia) communications is the primary benefit. In order to communicate with another person (i.e., peer) via a web browser, each person’s web browser must agree to begin communication, know how to locate one another, bypass security and firewall protections, and transmit all multimedia communications in real-time.
One of the biggest challenges associated with browser-based peer-to-peer communications is knowing how to locate and establish a network socket connection with another computer’s web browser in order to bidirectional transmit multimedia data. When you visit a web site, you typically enter a web address or click a link to view the page. A request is made to a server that responds by providing the web page (HTML, CSS, and JavaScript). The key here is that you make an HTTP request to a known and easily locatable (via DNS) server and get back a response (i.e., the web page).





Firewalls and NAT Traversal
Most of us access the internet from a work or home-based network. Our computer typically sits behind a firewall and network access translation device (NAT), and therefore is not assigned a static public IP address. From a very high level, a NAT device translates private IP addresses from inside a firewall to public-facing IP addresses. NAT devices are needed for security and IPv4 limitations on available public IP addresses.
Here is an example of NAT at work: suppose you’re at a coffee shop and join their WiFi, your computer will be assigned an IP address that exists only behind their NAT, say 172.0.23.4. To the outside world, however, your IP address may actually be 164.53.27.98. The outside world will therefore see your requests as coming from 164.53.27.98, but the NAT device will ensure responses to your requests are sent to 172.0.23.4 through the use of mapping tables. Note that in addition to the IP address, a port is also required for network communications, and the required knowledge of an accompanying port is therefore implied throughout this article.
Given the involvement of a NAT device, how do I know my mom’s IP address to send audio and video data to, and likewise, how does she know what IP address to send audio and video back to?
This is where STUN (Session Traversal Utilities for NAT) and TURN (Traversal Using Relays around NAT) servers come into play. In order for WebRTC technologies to work, a request for your public-facing IP address is first made to a STUN server. Think of it like your computer asking a remote server, “Howdy, would you mind telling me what IP address you see me as having?”. The server then responds with something like, “Sure your IP address is 198.54.5.67”.
Assuming this process works and you receive your public-facing IP address and port, you are then able to tell other peers how to contact you directly. These peers are also able to do the same thing using a STUN or TURN server and can tell you what address to contact them at as well.


Signaling, Sessions, and Protocols
The network information discovery process described above is one part of the larger topic of signaling, which is based on the JavaScript Session Establishment Protocol (JSEP) standard in the case of WebRTC. Signaling involves network discovery and NAT traversal, session creation and management, communication security, media-capability metadata and coordination, and error handling.
Signaling is not specified by the WebRTC standard, nor implemented by its APIs in order to allow flexibility in the technologies and protocols used. Signaling and the server that handles it is left to the WebRTC application creator to sort out.
Assuming that your WebRTC browser-based application is able to determine it’s public-facing IP address using STUN as described, the next step is to actually negotiate and establish the network session connection with your peer. This process is analogous to making a phone call.
The initial session negotiation and establishment happens using a signaling/communication protocol specialized in multimedia communications. This protocol is also responsible for governing the rules by which the session is managed and terminated.
One such protocol is the Session Initiation Protocol (aka SIP). Note that due to the flexibility of WebRTC signaling, SIP is not the only signaling protocol that can be used. The signaling protocol chosen must also work with an application layer protocol called the Session Description Protocol (SDP), which is used in the case of WebRTC. All multimedia-specific metadata is passed using the SDP Protocol.
Any peer (i.e., WebRTC-leveraging application) that is attempting to communicate with another peer generates a set of ICE candidates, where ICE stands for the Interactive Connectivity Establishment protocol. The candidates represent a given combination of IP address, port, and transport protocol to be used. Note that a single computer may have multiple network interfaces (wireless, wired, etc.), so can be assigned multiple IP addresses, one for each interface.

 

Advantages of WebRTC

1. Open source code
WebRTC is an open source code based project intended for data streaming between apps and browsers. This new communication standard is supported using the peer-to-peer technology. Google is the original developer of this technology, but today WebRTC is supported not only by Google Chrome, but also Opera and Firefox browsers. Other browsers can support WebRTC as well, after installing the additional extension webrtc4all.
2. Strong rival to classic telephony
Today, WebRTC is still a new experimental technology. However, it is forecasted that after standardization and certain improvements, this new communications standard will put pressure on the market of classic telephony. In fact, classic telephony already feels serious competition from more quality and cheaper VoIP services, such as Viber and Skype.

3. More security and stability
Despite the fact that this new communication standard is still in the process of refinement and development, there are certain clear advantages of WebRTC over the Flash technology. The WebRTC architecture is considered to have fewer disadvantages than the Flash plugin and to be more logical. Flash has dominated the market until recently, but it has been discontinued from the main web browsers such as Chrome and Firefox. When it comes to browser security and stability against external attacks, WebRTC is certainly the best choice.
4. Better sound quality
Among the benefits of WebRTC is also included the fact that, particularly due to the adjustable built-in microphone settings, this technology provides better sound quality than Flash. WebRTC technology uses G.711 and Opus codecs for transferring audio.
5. Supported by most leading Windows browsers
The many advantages of using WebRTC and the platform’s open source code make the interest in this technology from different businesses to continue growing. Many companies consider using independent solutions as being strategically profitable. This technology is ready to be implemented by some WebRTC developers into existing online business. Today WebRTC API is supported by most leading Windows browsers, including Google Chrome, Opera beta.
6. Interoperability with VoIP and video
The biggest value of WebRTC is its promise of interoperability with existing voice and video systems. This includes devices using SIP, Jingle, XMPP, and the PSTN. What may hinder the global interoperability will be the upgrades necessary in exiting devices. Alternately, gateways can be the solution to interoperability. Some are already on the market. If the existing voice and video devices using standard protocols, they will probably work with WebRTC-based devices.


Thursday 19 July 2018

Download Modern C++ Design: Generic Programming and Design Patterns Applied Pdf

The author describes the specific C++ techniques and features that are used in building generic components and goes on to implement industrial strength generic components for real-world applications. Recurring issues that C++ developers face in their day-to-day activity are discussed in depth and implemented in a generic way.
These include: z
  1.  Policy-based design for flexibility z 
  2. Partial template specialization z 
  3. Typelists-powerful type manipulation structures z 
  4. Patterns such as Visitor, Singleton, Command, and Factories z 
  5. Multi-method engines 






Press Download Button ----->     Download Now

Effective c++ pdf 55 Specific Ways to Improve Your Programs and Designs


The book is organized around 55 specific guidelines, each of which describes a way to write better C++. Each is backed by concrete examples. For this third edition, more than half the content is new, including added chapters on managing resources and using templates. Topics from the second edition have been extensively revised to reflect modern design considerations, including exceptions, design patterns, and multithreading.
Important features of Effective C++ include:
  • Expert guidance on the design of effective classes, functions, templates, and inheritance hierarchies.
  • Applications of new “TR1” standard library functionality, along with comparisons to existing standard library components.
  • Insights into differences between C++ and other languages (e.g., Java, C#, C) that help developers from those languages assimilate “the C++ way” of doing things.

Download Now

Thursday 6 July 2017

SOLVED: error code 13 in eclipse


Hello guys,

Sometimes You face your eclipse is not opening after installing some new java jre or jdk version. At the time of opening eclipse your got big popup error code 13 as per below image.




- Do not worry. just Relex!!!!!!....  I will provide you a good solution and worked most of times.

- Just open your eclipse folder  as per below image.


- Open eclipse.ini File in notepad or notepad++.

- Add this two line as per your java jdk installation directory.



-- Now just open again eclipse.....Anddd MAGICCCC......enjoy your coding again........

Download Embedded C programming Tutorial:pdf

You can Download tutorial from below link


Link To DownLoad

Download Now

Wednesday 26 April 2017

How to set c++11 or c++14 flag in compiler in CodeBlock

Hello All,


Many times you come across the word of std=c++11 or std=c++14 in compiler world.It is actually compiler flag that contain all functionality which release on that version.Number comes from year.

every few compiler with newer functionality. So In any software we need to set flag to use those functionality if it is not set by default. Here I will show you for Code Block software or IDE.

1) Open Code block IDE .Page will Look like below image.




2) Then you need to go "Settings" Tab in upper status bar.Then select "Compiler.." option.

3) Now you can see various compiler version available. From this You can enable any compiler which available.Here I have tick std=c++11 version.Now press OK.






Friday 29 April 2016

Download design patterns explained simply pdf






Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.
The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.
Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.


  Press Download Button ----->     Download Now