VOIP in C#, asp.net or Java - c#

Could you people please give some good resource / ideas of implementing VOIP in c#.net, Asp.net or Java.
Why I am specifying 2 different language platforms is we are yet to take up a call.
Basically we don't have the idea henceforth the concept is more important to us.
We are going to make a White board application and one of the client requirement is
White board should have VOIP
conferencing, chat image sharing and
ability to upload .pdf files

I reckon your looking into developing software like orange business webex or something similar. The software is not too difficult to develop. First, are you planning to write the entire application yourself or just purchase the components and integrate ? I would recommend you shop around for components and just integrate because VOIP is rather complex.
Here is a link for SIP communicator in java which supports VOIP

Doing simple point-to-point VOIP isn't too difficult. Basically, you need a codec on each end, and then typically use UDP to send encoded packets from one end to the other.
There can also be network connectivity issues, particularly related to NAT.
If you want to interoperate with existing VOIP-based systems, then you will need to support one of the underlying connection protocols, such as H.323, and you may also need monitoring and control over RTP. Those protocols are notoriously complex.
There are a bunch of tricks to play when doing this kind of thing with a managed language like C# or Java, particularly related to avoiding hiccups due to GC.

A link to a few more Java VOIP projects/components:
http://voip.dev.java.net/
One "gotcha" to beware of, in terms of future functionality, is that Java's (as opposed to JavaFX's) video support is something of an open question at the moment.

Related

Solution for WebRTC mediaserver

I would like to consultate what is the best solution for mediastream server(WebRTC) that can fulfill my needs.
What I need:
Easily manage 50+ connections. Ability to switch who is hearing whom, and who is talking to whom.
Clients should have only one WebRTC connection. Which is going to server. Server then again, control what he is hearing, and to whom he is talking to..
That is basically my needs. I prefer languages like C# and NodeJS.
I looked at kurento, which seems to have kinda bad documentation, and it uses Java which I am not familiar with.
Any alternatives, suggestions?
Thank you.
The whole point about webRTC is that it's peer to peer, and doesn't need a server (except for the initial signalling).
The beauty of this is that you can scale to handle as many connections as you like. The performance is only limited by the client browsers and their connection speed.
You only need a media server if you need to do video conferencing for more than one or two users on the same call.
Writing a video conferencing server is a big deal, it's a complex problem to solve, and I would recommend starting with an existing open source project as your base. If you go down this path, you will need some serious hardware and bandwidth, because the server will be handling each and every video stream, and need to be scalable.
This article lists 6 open source projects that may fit your needs: https://elearningindustry.com/top-6-open-source-web-conferencing-software-tools-elearning-professionals
Top Open Source Web Conferencing Software Tools eLearning
Professionals Should Know About
While there are plenty of open source web conferencing tools available
these days, there are also a number of budget-friendly alternatives
that still offer the same features and functions. In fact, open source
web conferencing software offers you the opportunity to host virtual
training events, collaborate with colleagues, and offer learners
personalized support without paying hefty monthly fees.

CANopen windows library, multiple devices

I am going to write Windows application (for commercial use) which will send/receive and trace CANopen messages.
The problem is I don't know what devices will be used by users of this app.
Currently I have one requirement to support only USB-CAN devices.
However there is many vendors of such devices and everyone has other api/library/dll to use theirs devices.
(By the way, the problem is because I have to use Windows.
As I know on Linux is SocketCAN and everything is more standardized :-()
I don't know which library should I use. Could you recomend me something.
Of course this library should support as many vendors (and drivers) as possible.
Second requirement is this library shall compile to IL or somehow I can use this library in my C# application.
I have done small research:
The most popular is CAN Festival but it is abandoned project, however there is a few forks.
There is CANopen for .NET
But support only PEAK devices and state is prealpha
CANopen for Python
Support more devices but state is also alpha and I don't know if I can use this library in my c# application. Maybe when I use IronPython.
I also found this library: http://www.emtas.de/en/allgemein/csharpapi. It is commercial, but If support many devices I can buy It. Anyone has used it before??
We are using and have licensed the Swedish datalink.se CANopen library and it works very well for us. But honestly we are only using the CAN interface driver layer on Windows, for accessing a range of devices like Lawicel, Kvaser, IXXAT a.s.o. I haven't looked at the CANopen parts so much.
I looked at other CANopen SW stacks, too, back then, but like you I wasn't happy about CAN Festival. So what we do in our Kickdrive software is that we implemented just the amount of CANopen that we really need. See my answer in the post How to program a simple CANopen layer.
Depending on what are your actual requirements, this might be good enough already, or even the best approach.

Network programming and Packets interactions

Greeting,
This month I will start working on my master thesis. My thesis's subject is about network security.
I need to deal with network interfaces and packets.
I've used shappcap before to interact with packets but I'm not sure if C# is the most powerful language to deal with network programing and packets.
I worked a bit with wireshark and I saw how powerful it is and as you know winsharp is open source developed using C++.
I'm not sure if I should use C# or C++ for network security programming and I want your through about the best language might be for network programming and packets interaction.
should I use C#, C++, or java or some thing else?
please give me your advice.
Thank you,
UPDATE
..........................
I'm going to do different packet mining by taking each packet and read each field on it then use these values and in same stages I would modify some of the packets value then resend them back.
I want to control the packet since it received by the network interface until it passes to the application layer.
also
You'd be able to do network programming using almost any language you want to. If you are equally comfortable in all of the languages you've mentioned, you should determine what system libraries or APIs will you be interfacing with. For example, if you will be doing packet-level network programming on a Unix system, C would probably be your best best. If you want to integrate with Wireshark, go with C++. If you want to use an Apache Commons component, use Java. I suggest you come up with a more specific set of requirements for your actual program before trying to decide which language to use.
WireShark uses WinPCap so you could go that route as well.
For security application, is that a intrution detection system or do you actually want to drop offending packets? WinPCap, SharpPCap etc. do not allow you you drop packets, for this you will need to look at some kind of intermediate driver or look at Windows Filtering Platform (WFP)
http://www.microsoft.com/whdc/device/network/WFP.mspx
IMHO, if you can find a callback driver that calls back to user mode and allows you to filter the packets from C# or C++, this would probably be fine for experimental purposes etc. but for a production solution, I think you would need to stick to the kernel level to ensure that you can keep-up with the peek volume.
Use C++, Boost and Poco and you can do what you want. Boost asio is: Portable networking, including sockets, timers, hostname resolution and socket iostreams. Poco library also provides solutions for network, cryprography NetSSL ... and more. For more information you can visit www.boost.org and www.pocoproject.org
You can use java if you like - jpcap works well.
I would suggest using C#, since there is a very strong library called Pcap.Net that wraps WinPcap with .NET code. This should make it easy for you to receive, send and interpret packets different packets of different protocols.

What is the best way for C# app to communicate unix c++ app

the ways I can think of
Web service or soap
Socket
Database table
shared file
Any concise example you know of for webservice?
Web services or soap would be fairly easy, however, if the C++ application isn't a web server naturally (or the C# application), it may be easier to just use socket programming directly.
Sockets are fairly easy to use from both C# and C++. They give you complete control over the type of date transmitted, at the cost of potentially a little more work in the handling.
The biggest issues to watch for are probably endianness of binary data, and encoding of text data, if you use sockets directly. Otherwise, it's very easy.
Since you are already aware of the Web service and socket approach, I'll mention some other options. If you like simplicity, check out XML-RPC. This is what SOAP was before large standards committees and corporate interests began to control the specification. You can find implementations of XML-RPC for just about every major programming language out there. Hessian is an interesting binary protocol that has many fans and supports just about every major language as well. Protocol Buffers is popular within Google. The official version from Google does not support C#. However, the two highest rep users of SO do provide ports of protobuf for the .Net space.
I will probably be ridiculed for this, but also take a look at CORBA. It's not in vogue these days, but has many substantial technical creds, especially if one end of the communication is C++. IMHO, it's WS-* with OO support and no angle brackets required. For interop, I think it still should have a seat at the table. When engaged in C++ development, I found OmniOrb to be quite effective and efficient. Take a look at this SO Question for some pointers concerning using CORBA in .Net.
Sockets are easiest; and I would always go for that first. If database is an option, that's also trivial, but that would really depend. If it's queued events, that would make sense, but if it's request/response, it's probably not so great.
you can use gsoap to have a C/C++ program use a webservice.
You can also call a cgi program that is written in C++.
I have written a server in C that communicated with a C# client, and the endianess can be a pain to deal with, webservices is so much simpler.
Do you want it to communicate with each other (for instance, through tcp (like many others have pointed)) or do you want to be able to translate objects from C# to C++? If so, check out Apache Thrift (http://incubator.apache.org/thrift/).

C# Game Network Library

I am developing an online strategy game using .Net v2. Although the game is primarily strategic, it does have some tactical elements that require reasonable network performance. I plan to use TCP packets for strategic data and UDP packets for tactical data.
{EDIT} I forgot to mention that I am leaning away from WCF and .NET 3+ for a couple of reasons. First, because I want to keep my download small and most of my customers already have .NET 2.0. Second, because I would like to have the option of porting to Mac and Linux and am unsure of WCF availability in Mono. {/EDIT}
I am looking for network library recommendations. I have found a few options, such as GarageGames' Torque Network Library (C++), RakNet (C++), and the lidgren network library (C#):
http://www.opentnl.org/
http://www.jenkinssoftware.com/
http://code.google.com/p/lidgren-network/
Does anyone have real-world experience with these or other libraries?
I just stumbled on RakNetDotNet:
http://code.google.com/p/raknetdotnet/
This might be what I'm looking for...
Microsoft's own .NET based XNA allows you to create networked games on Windows and XBox 360.
http://code.google.com/p/lidgren-network-gen3/
Lidgren.Network is a networking library for .net framework which uses
a single udp socket to deliver a simple API for connecting a client to
a server, reading and sending messages.
I'd also like to note that "Games for Windows", which XNA uses on windows with its Live! networking APIs is now free ... which means that if you write an XNA game that uses the networking features, your users do not have to have a gold membership :-)
http://www.engadget.com/2008/07/22/games-for-windows-live-now-free/
Why limit yourself to .NET 2.0. .NET 3.0 (or 3.5) contains WCF and is a solid, performant communications subsystem with good security. .NET 3.0 is just .NET 2.0 with additional libraries (WCF, WF, WPF).
You could take a look at Entanglar ( http://entanglar.dunnchurchill.com ) if you are looking for something higher level. Entanglar provides full entity lifecycle and sync.
Although this question is rather old, a somewhat higher level system developed specifically for games is APlay - among the supported platforms is also C#. There are evaluation versions and it is free for personal use.
You define your game objects in an UML alike fashion and an online code generator creates assemblies containing your game objects. Sending state updates is then as simple as calling setter methods.
Not the right thing, if you want to cope with sockets by yourself. Please also note that I am a developer of APlay so this is a biased answer.
An ancient question, but I'll put this out there for anyone else who stumbles across this. We're using OpenTNL for our game, Bitfighter, and I am consistently surprised at how well it works. And it's free if you can live with GPL.
If you're new to game development, I'd recommend XNA- it's easy to program with. The advantage of Torque, however, is it has asset creation tools, which can also be invaluable. For a higher end game or FPS, the Source engine is great.

Categories

Resources