java - 如何在 Java 中设置本地服务器以进行流式传输?需要建议

标签 java web server streaming

<分区>

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

这只是目前的一个想法,我知道这类东西可能需要大量的研究工作,但作为一个新手,我真的很困惑从哪里开始。我只需要建议/指导(如果我所说的是可能的话),以及我该怎么做才能到达我想要的地方。

提前致谢! :)

最佳答案

如果您要从头开始构建,那将是一段漫长的旅程。您可以使用很多 API 轻松实现这一目标。但是,我只是从非常基础的方面向您解释,然后您可以继续进行更多研究。

enter image description here

There are 3 main concepts to achieve what you are saying:

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

在您的情况下,因为您想通过 wifi 将客户端连接到服务器。您的架构看起来像这样。

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

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

现在你想要实现不同的东西,比如聊天应用和直播。

Chat Application (https://www.codeproject.com/Articles/524120/A-Java-Chat-Application)

  1. 对于聊天应用程序,我们必须确保我们发送的消息必须到达目的地。
  2. 为了让这种 100% 准确的套接字编程为您提供 TCP 协议(protocol)。

Streaming Application {Audio/Video} (Live audio stream java)

  1. 对于流媒体应用程序,TCP 协议(protocol)不是必需的,原因有二。
  2. 首先,我们实际上可以接受如果丢失一两个数据包,因此您可以看到在使用 YouTube 时会出现一些故障。
  3. 对于在线流媒体来说,最重要的是它应该很快,而 TCP 是一个非常繁重的协议(protocol)。
  4. 这就是为什么套接字编程还允许您使用比 TCP 更快的 UDP 协议(protocol),但不提供消息到达的保证。

Above is a very brief introduction in laymen term. For better understanding you have to read about Socket Programming. Once, you did that you can do above project. However, if you see above link you can do your project but you won't understand anything and more importantly in case of failure you can troubleshoot.

关于java - 如何在 Java 中设置本地服务器以进行流式传输?需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858029/

相关文章:

java - JSP中的登录验证和 session

web - 在 Safari 13 中,导出到 HAR 的选项被禁用(灰显)。我怎样才能启用它?

session - 在 Golang 中跟踪在线用户

java - 使用 lib JShortcut 在 java 中创建快捷方式

java - 如果我在其中放入字符,HashMap 中的 containsKey 方法会检查整数吗?

java - Odroid N2 "getGpioList()"返回空数组,无法访问 gpio 端口

linux - 使用 Google DNS 服务作为内部 Linux BIND9 DNS 服务器的辅助/从属服务器

java - 从 Javascript 调用 Java (Birt)

Facebook 分享/喜欢默认图像、标题、描述文本

linux - 我可以通过 SSH/HTTP 连接到我的服务器,但无法 ping 通它