如何在Java中设置本地服务器进行流媒体?需要建议

时间:2017-10-20 22:12:06

标签: java web server streaming

我是Java的新手,我想用它做一些很酷的事情。作为第一步,我提出了为我家设置本地服务器的想法。我想要一个没有互联网运行的简单服务器,连接到家庭wifi的所有设备都可以查看 在稍后阶段,我计划用它做各种各样的事情,比如初学者一个简单的聊天应用程序。或者是在我的设备之间共享文件的门户。
在最终产品中,我想做流式传输。就像主机在服务器上播放音乐一样,所有连接的设备都可以转到页面并听同一音乐完全同步。或者直播视频!

目前这只是一个想法,我知道这种东西可能需要大量的研究工作,但是新的我真的很困惑从哪里开始。我只是需要建议/指导,如果我说的是可能的,我能做些什么才能到达我想要的地方。

提前致谢! :)

4 个答案:

答案 0 :(得分:3)

如果你从头开始建设,这是一个漫长的旅程。您可以使用很多API来轻松实现这一目标。但是,我只是从非常基础的角度解释你,然后你可以继续前进并做更多的研究。

enter image description here

  

有三个主要概念可以实现您所说的内容:

  1. 客户端:向服务器发送请求的内容。手机,笔记本电脑等设备
  2. 服务器:接收来自客户端的请求并进行一些处理并返回结果的东西。现在在现实生活中,服务器只是一个软件程序(可以用多种语言编写,Java就是其中之一),它在计算机上运行并在ip地址+端口上侦听客户端请求(ip +端口就像服务器的地址) 。这就像我想给你发信一样,我应该知道你的地址。
  3. 套接字编程:套接字编程定义了客户端和服务器可以通信的协议和机制。在上面的图像中,所有链接都是使用套接字编程实现的上面的图像中的线程允许并发,因此对于上面的图像,每个客户端就像服务器的线程。
  4. 在您的情况下,因为您想通过wifi将客户端连接到服务器。你的架构看起来像这样。

    Client                
    Client    -------------------   WIFI  ----------------  SERVER
    :
    :
    

    WIFI只是将您的请求转发给服务器并将响应从服务器转发给您的客户端。

    现在,您希望实现聊天应用和直播等不同的功能。

      

    聊天应用程序(https://www.codeproject.com/Articles/524120/A-Java-Chat-Application

    1. 对于聊天应用程序,我们必须确保我们发送的邮件必须到达目的地。
    2. 为了实现100%准确性,套接字编程为您提供了TCP协议。
    3.   

      流媒体应用程序{音频/视频}(Live audio stream java

      1. 对于流应用程序,由于两个原因,TCP协议不是必需的。
      2. 首先,我们实际上可以确定如果一个或两个数据包丢失,因此您可以看到使用youtube时会出现一些故障。
      3. 对于在线流媒体,最重要的是它应该是快速的,TCP是一个非常繁重的协议。
      4. 这就是为什么Socket编程还允许你使用比TCP更快的UDP协议,但不能保证消息能够到达。
      5.   

        以上是非专业术语的简要介绍。为了更好的   理解你必须阅读有关套接字编程的内容。有一次,你做到了   你可以做上面的项目。但是,如果你看到上面的链接,你可以   做你的项目,但你不会理解任何事情,更重要的是   如果失败,您可以进行故障排除。

答案 1 :(得分:2)

这是一个很好的项目。你会学到很多东西。

也许你可以做的一件简单的事情就是设置一个服务器来使用网络套接字广播信息。

你可以在互联网上找到更多,但这里有一些例子:

http://www.baeldung.com/java-websockets http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html

我不知道它是否能很好地播放广播数据,但我一直致力于聊天应用程序,而且对于简单的消息,它可以很好地完成工作。

答案 2 :(得分:1)

当然,你可以按照自己的想法行事,但正如你自己说的那样,需要很多RnD才能完成任务。

我建议你开始的方法是首先确定并将你的工作划分为不同的模块,例如: (文件共享,聊天,音乐商店等)

然后,对于每个模块,创建小的用例,例如 FOR文件共享:

  • 显示目录内容
  • 切换目录
  • 创建目录
  • 下载文件

.....等等。

我认为你对编程和Web应用程序有所了解:p

仅在上述用例完成后才开始开发工作。从一次使用一个用例开始,例如

  

显示目录内容

为该部署创建一个servlet / jsp,然后继续下一个,直到你完成所有的用例和模块。

答案 3 :(得分:0)

对于刚接触Java的人来说,这是一个非常雄心勃勃的项目。我建议您先从服务器开始,尤其是流媒体服务器。从基本的东西开始,了解数据类型,类和对象,数据结构,集合,类似的东西。学会使用调试器,不能强调那个的重要性。一旦您对这些概念感到满意,就可以转移到服务器上。到那时,您将更好地掌握语言,最重要的是将了解Java在查看堆栈跟踪时告诉您的内容。