我是一名应用开发的初学者。
到目前为止,我已经使用C#开发了一个点对点的BattleShips游戏,以及使用Java开发了一个点对点的Connect 4游戏。
对于我的下一个项目,我决定去做多媒体方面的内容。
我想实现一个点对点的聊天程序,它可以向每个客户端传输音频/视频流,以及文本聊天,也许还有文件传输。我想使用C#来实现它。
我的问题是从哪里开始?
我阅读了SO和其他各种来源,但由于我的经验不足,仍然难以理解。
欢迎给初学者提供任何小技巧,例如寻找相对容易理解的教程。
您可以看一下Jabber(XMPP) - 它是专门为您描述的任务而设计的。 Jabber-net是一个有用的.NET库。FYI,Google IM使用Jabber,并构建了一组视频聊天扩展,称为Jingle(也是开源的)。
非常高层次的描述:
对于语音聊天,我会使用DirectX的音频驱动程序来捕获语音数据,然后将其流式传输到另一台计算机(使用UDP数据包,但需要概述Beej's [http://beej.us/guide/bgnet/]指南中的网络知识)。
以下是一个很好的教程和代码,可以让你入门: http://www.codeproject.com/KB/audio-video/VoiceChatApplicationInCS.aspx?msg=2193667
对于网络摄像头,这个想法类似,只不过你将会流式传输一系列图像而不是音频数据。应该有一个库在DirectX SDK中(直接显示?)提供了通用的API,可以支持很多网络摄像头,但最终你将获取来自一台计算机的数据,并使用音频和视频格式进行编码、流式传输和解码。
祝你好运!
如果你想使用C#中的原始套接字编写自己的协议,那么你需要熟悉网络协议。 首先要查找如何向端口发送文本消息以及如何读取任何发送到端口的内容并将其显示在屏幕上。
你需要有一个简单的控制台应用程序,无限运行并监听一个端口(充当服务器), 还需要另一个简单的控制台应用程序,用于向指定端口发送消息。
这应该可以让你有所启发。然后你可以修改你的代码以进行视频流传输(更加困难)。