我该如何开始编写像Web应用程序这样的Skype?

时间:2012-01-26 05:16:55

标签: web-application-design

这是我正在参加的编程课程。我符合先决条件,这只是C ++的强大知识。

澄清:这不应该是桌面应用程序的后端。该网站在浏览器中进行视频聊天,文件发送,文本聊天等。

所以我没有网络开发经验。我之前玩过PHP并查看了一本JavaScript书籍并且觉得使用起来很舒服。我知道MySQL是什么以及如何设置表和东西。

接下来的8周我需要做的是:

  • 让视频聊天工作(2人之间)
  • 拥有登录页面,每个用户都有个人资料和联系人列表
  • 文字聊天(2人之间)
  • 文件共享(2人之间)

我不知道该用什么来实现这一目标。我有一些想法,但我不确定它们是否真的有效。我被允许使用开源库,程序,代码等来构建这个Web应用程序。

如果有人能指引我朝着正确的方向前进,建议我应该如何实现这些功能,我会非常感激。

此外,当我一直在谷歌上搜索如何做这样的事情时,我看到了一些名为CakePHP的东西。你能建议我用这个吗?如果是这样,我应该用它做什么呢?

2 个答案:

答案 0 :(得分:7)

你需要很多咖啡!

Skype使用点对点和客户端/服务器方法的混合架构来获取数据。如果这只是在内部局域网上运行,您不必担心中间的服务器,并且可以专注于设置对等连接。

在现实世界中,路由器通过称为NAT的东西隐藏计算机,Skype使用服务器登录并通过NAT设置开放端口。然后Skype将此信息发送给您的其他对等方,并从那里运行对等连接。

在内部网络上,您只需通过开放的UDP端口与他人通信即可。 Skype使用此而不是TCP,因为互联网上的大部分其他通信都依赖于此。基本上,您无法获得可靠的交付,两端的应用程序都适应这一点。 (即,当数据包丢失或被破坏时,您的视频会冻结一秒钟)

              SKYPE SERVER
                 /    \
                /      \
               /        \
              /          \
        PEER 1 --------- PEER 2

在弄清楚如何通过网络运行之后,您需要学习Windows Image Acquisition API,这是使用网络摄像头获取静态图片的标准方法。你连续拍摄了这张照片和BINGO!你有一个乡巴佬视频流可以通过网络发送。

我认为MySQL可以通过PHP发布的SOAP Web服务来处理登录和联系人数据库......

您为什么称这是一个Web应用程序?它会在网络浏览器中运行吗?它只是一个网络应用程序,对吗?

还有一条建议......用C#或其他一些.NET语言编程可能会有所帮助,因为你可以使用更多的控件。例如,有一个WIA控件可以轻松地将视频流传输到您的应用程序中。

答案 1 :(得分:0)

我认为这些链接可能对您有用:

http://www.codeproject.com/aspnet/webcamimage.asp
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1339&lngWId=10

另外我建议你使用UDP连接,
并开发一些类似标题的简单原型 例如标题0x01表示下一个将是消息结构
0x02,接下来将是一个帧结构(网络视频流)等等