2017-10-20 5 views
2

저는 Java를 처음 접했고 그걸로 멋진 것을하고 싶었습니다. 첫 번째 단계로 내 집에 로컬 서버를 설치하는 아이디어를 생각해 냈습니다. 인터넷이없는 간단한 서버를 원한다. 집에있는 모든 장치가 Wi-Fi를 볼 수있다.
나중에 간단한 채팅 응용 프로그램처럼 여러 가지 작업을 계획하고 있습니다. 내 장치간에 파일을 공유하는 포털.
최종 제품에서는 스트리밍을하고 싶습니다. 호스트가 서버에서 음악을 재생하면 연결된 모든 장치가 페이지로 이동하여 완전히 동기화 된 동일한 음악을들을 수 있습니다. 또는 비디오 스트리밍!스트리밍을 위해 Java에서 로컬 서버를 설정하는 방법은 무엇입니까? 제안이 필요합니다

그것은 잠깐 생각입니다. 이런 종류의 연구는 많은 연구가 필요할 수도 있지만 새로운 것이기 때문에 어디에서 시작해야하는지 혼란 스럽습니다. 내가 말하는 것이 가능하면 제안/안내가 필요하며, 내가 원하는 곳으로 가려면 무엇을해야합니까.

미리 감사드립니다. :)

+0

[웹 서버에 더 적합한 도구] (http://flask.pocoo.org/)가있을 수 있습니다. 모든면에서 순수 Java로 이러한 문제 중 일부를 해결하는 것은 실망 스러울 수 있습니다. – rob

답변

3

그것은 긴 여행이다. 이것을 매우 쉽게 달성 할 수있는 많은 API가 있습니다. 그러나, 나는 단지 당신을 아주 기초에서 설명 할 것이고, 그 다음에 앞으로 나아갈 수 있고 더 많은 연구를 할 수 있습니다.

  1. 클라이언트 : 서버에 요청을 보내는 것

    enter image description here

    당신이 무슨 말을 달성하기 위해 3 개 주요 개념이 있습니다. 모바일, 노트북 등의 기기
  2. 서버 : 클라이언트로부터 요청을 받고 일부 처리를 수행하고 그 결과를 되돌립니다. 이제 실생활에서 서버는 컴퓨터에서 실행되며 IP 주소 + 포트 (IP + 포트는 서버의 주소와 같음)에서 클라이언트 요청을 수신 대기하는 소프트웨어 프로그램입니다 (많은 언어로 작성 될 수 있습니다 Java는 그 중 하나입니다) . 이것은 내가 귀하에게 귀하의 주소를 알아야한다는 편지를 보내고 싶다는 것과 같습니다.
  3. 소켓 프로그래밍 : 소켓 프로그래밍은 클라이언트와 서버가 통신 할 수있는 프로토콜과 메커니즘을 정의합니다. 위 이미지에서 모든 링크는 소켓 프로그래밍을 사용하여 만들어집니다. 위 이미지의 스레드는 동시성을 허용하므로 위의 이미지는 모든 클라이언트가 서버의 스레드와 같습니다.

귀하의 클라이언트를 wifi를 통해 서버에 연결하려는 경우 귀하의 경우입니다. 귀하의 아키텍처는 이와 같이 보일 것입니다.

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

여기서 WIFI는 서버에서 클라이언트로 요청을 전달하고 있습니다.

이제 채팅 응용 프로그램과 실시간 스트리밍과 같은 다양한 기능을 수행하고자합니다. 채팅 응용 프로그램에 대한

채팅 응용 프로그램 (https://www.codeproject.com/Articles/524120/A-Java-Chat-Application)

  1. 우리는 우리가 보낸 메시지가 목적지에 도달해야 함을 확인해야합니다.
  2. 이 100 % 정확도 소켓 프로그래밍을 허용하려면 TCP 프로토콜을 제공합니다. 응용 프로그램의 TCP 프로토콜을 스트리밍

스트리밍 응용 프로그램 {오디오/비디오} (Live audio stream java)

  1. 때문에 두 가지 이유이 켜지지 없습니다.
  2. 첫째, 실제로 하나 또는 두 개의 패킷이 손실되면 youtube를 사용할 때 몇 가지 결함이 있음을 알 수 있습니다.
  3. 온라인 스트리밍의 경우 가장 중요한 것은 빠르고 TCP가 매우 많은 프로토콜이어야한다는 것입니다.
  4. 왜 소켓 프로그래밍을 사용하면 TCP보다 빠른 UDP 프로토콜을 사용할 수 있지만 메시지 도달 범위 보장을 제공하지는 않습니다.

위의 용어는 매우 간단한 소개입니다. 더 나은 을 이해하려면 소켓 프로그래밍에 대해 알아야합니다. 일단 위의 프로젝트에서 수행 할 수있는 을 수행했습니다. 그러나 위의 링크를 볼 수 있다면 프로젝트를 수행 할 수 있지만 더 이상 중요한 것은 이해하지 못합니다. 오류가 발생하면 문제를 해결할 수 있습니다.

1

물론 당신이 생각하고있는 것을 할 수는 있지만, 스스로 말한대로 RnD를 많이 사용하여 작업을 완료해야합니다.

내가 시작하는 방법을 먼저 제안하고 다른 모듈로 작업을 분류하고 나누는 것이 좋습니다. (파일 공유, 채팅, 뮤직 스토어 등)

그런 다음 각 모듈에 대해 작은 유스 케이스를 만듭니다. 파일 공유에 대한 :

  • 디스플레이 디렉토리의 내용 등
  • 스위치 디렉토리
  • 만들 디렉토리
  • 다운로드 파일

.....합니다. P

시작 개발 작업 위의 경우가 완료 사용 후에 만 ​​:

난 당신이 프로그래밍 및 웹 응용 프로그램의 지식을 가지고 가정한다. 한 번에 하나의 유스 케이스를 가져 오는 것으로 시작하십시오.

디스플레이 디렉토리의 내용

이 그를 배포 한 다음 모든 쓰임새와 모듈을 완료 전까지 다음 하나에 갈위한 서블릿/JSP를 만들 수 있습니다. 처음부터 구축하는 경우

0

이것은 Java에 익숙하지 않은 사용자를위한 매우 야심적인 프로젝트입니다. 먼저 스트리밍 서버로 시작하지 않는 것이 좋습니다. 기본적인 것들부터 배우고, 데이터 유형, 클래스와 객체, 데이터 구조, 콜렉션 등을 배우십시오. 디버거를 사용하는 법을 배우고, 그 중 하나의 중요성을 강조 할 수는 없습니다. 이러한 개념에 익숙해지면 서버로 이동합니다.그때 당신은 언어에 대해 훨씬 더 잘 이해하게 될 것이고 스택 트레이스를보고있을 때 Java가 말하고있는 것을 이해하는 것이 가장 중요합니다.

+0

제안 해 주셔서 감사합니다. Java에 익숙하지 않지만 C++에 대한 경험이 있습니다. 기본적인 OOP 개념을 이해하는 것은 쉽습니다. 나는 기초를 통해 끝났다고 믿는다. –

1

좋은 프로젝트입니다. 너는 많이 배울거야.

웹 소켓을 사용하여 정보를 브로드 캐스팅하도록 서버를 설정하는 것이 처음부터 할 수있는 간단한 방법 일 수 있습니다. 이 데이터를 방송 잘 수행하는 경우

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

는 나도 몰라,하지만 난에 근무했습니다

현재보다 인터넷에서 많이 찾을 수 있지만

은 몇 가지 예입니다 채팅 응용 프로그램과 간단한 메시지를 위해 정말 잘합니다.