views:

71

answers:

3

i am a beginner in terms of application development.

so far i have developed a peer to peer game of BattleShips in C# and a peer to peer game of Connect 4 in Java.

for my next project i have decided to go multimedia.

i would like to implement a peer to peer chat program that uses Audio/Video streaming to each client as well as text chat and maybe file transfer also. i would like to implement it in C#.

my question is where should start?

i have read through SO and various other sources but due to my lack of experience it is still proving to be cryptic.

any tips at a newbie level are most welcome i.e. looking for relatively easy to understand tutorials.

+2  A: 

Take a look at Jabber (XMPP) - which is designed specifically for the tasks you describe. Jabber-net is a helpful .NET library. FYI Google IM using Jabber and has built a set of video chat extensions known as Jingle (also open-sourced)

Mikos
A: 

you want to be familiar with your networking protocols if you want to write your own protocol using raw sockets in C#. start by looking up how to send a text message to a port and how to read anything sent on a port and display it to the screen.

you'll need to have a simple console app that runs infinitely listening on a port (acting as your server) and another simple console app that will send messages to your specified port

that should give you something to start with. then you can alter your code for video streaming(alot harder)

Sotelo
A: 

Very high level here:

For voice chat, I would go about using direct x's audio drivers for microphones to capture the voice data then stream it to the other computer (UDP packets, but do an overview of networking using Beej's [http://beej.us/guide/bgnet/] guide)

This is a great tutorial and code to get you started: http://www.codeproject.com/KB/audio-video/VoiceChatApplicationInCS.aspx?msg=2193667

It's a similar idea with the webcam except instead of sending audio data you'd be streaming a series of images. There should be a library in the Direct X SDK for this (direct show?) that will provide a generalized api for a bunch of webcams, but at the end of the data you'll be getting data from one computer, encoding, streaming and decoding it with both audio and video formatting.

Good luck!

Ayubinator