質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Network+

Network+とは、IT業界団体CompTIA認定のネットワーク技術に関する知識を証明する資格です。ネットワーク技術者として、実務で必要なネットワークセキュリティ・ネットワークアーキテクチャなどの知識を取得している証明となります。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Q&A

解決済

3回答

10087閲覧

JavaでSNSを作りたい!!

Leonhqrt

総合スコア17

Network+

Network+とは、IT業界団体CompTIA認定のネットワーク技術に関する知識を証明する資格です。ネットワーク技術者として、実務で必要なネットワークセキュリティ・ネットワークアーキテクチャなどの知識を取得している証明となります。

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

0グッド

0クリップ

投稿2016/02/18 08:42

このたびプログラミングでツイッター---のようなSNSを作ることになりました

そこでローカルで通信できるプログラムを組み、IPアドレスとポート番号で通信ができることができました。
ネットを通じて通信を行うには、グローバルIPアドレスとポート番号で通信ができると思うのですがあっていますか?

ローカルで通信できるプログラムは1対1での通信を行える物でしたが、SNSは1対多の関係にあると思うので、
javaまたはjavaEEを使用してどのようにして1対多の通信を行えるようにすればよろしいでしょうか。

またポートについての質問もあるので教えていただければと思います。
・ポート番号を決めてソケットを確立すると思いますが、どの番号を使用すればよろしいでしょうか。
・サーバー側はどのポート番号を使用すればよろしいでしょうか。
・サーバーの使えるポート数の制限等はものによってあるのでしょうか。
あるならどのような不利なことがありますか。

いろいろとわからないことがあるのですが
教えてくれると幸いです

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

「ツイッターのようなもの」を作成する方法の一つとして提案します。

上記コメントで、「アンドロイドスタジオ」と書いてるあるので、
下記のような図式のアプリケーションを作成するものとします。
Androidアプリ <-> サーバー(Webアプリ)

また、「ツイッター---のようなSNS」というのがどの程度のものか分かりかねますので、
「アプリ(WebアプリまたはAndroidアプリ)からメッセージを投稿すると、
アプリ(WebアプリまたはAndroidアプリ)上にメッセージが表示されるもの」
という認識で話をさせていただきます。

ソケット通信を使用したものを検討されているようですが、
JavaのPlayFrameworkというMVCモデルのWebフレームワークを使用してWebアプリを作成し、
AndroidアプリとはHTTP通信を行うことで実現可能かと思います。
この方法の場合は、ポートを気にする必要はありません。

Webアプリの流れ
1.Webアプリ上(View)でメッセージを送信
2.サーバー側(Controller)で、受け取ったメッセージを精査して、
問題が無ければDB(Model)に保存し、Webアプリ上(View)に反映させる

Androidアプリの流れ
1.AndroidアプリでメッセージをJSONで送信
2.サーバー側(Controller)で、受け取ったメッセージを精査して、
問題が無ければDB(Model)に保存し、「送信成功」レスポンスを返す
3.レスポンスが「送信成功」ならば、Androidアプリの画面を更新して送信したメッセージを表示

簡単に書きましたが、恐らくはこんな流れで実現可能ではないかと思います。
あくまで方法の提案ですので、詳細については調べてみてください。

投稿2016/02/20 10:47

youki_yuuki

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Leonhqrt

2016/02/22 07:00

返信遅くなりました。 申し訳ございません 詳しい解答の方ありがとうございました。 MVCモデルでの実現を例として提示しれくれましたが、 この方法でこれを作成するために必要な言語としては、 java,jspで実現できると思っているのですが、 あっていますか? ご回答の方よろしくお願いします;
youki_yuuki

2016/02/22 15:23

基本的にJSPは使用せず、JavaとScalaで実現可能です。 Javaと完全な互換性がありますが、 2.0以降からフレームワークのコア部分や、 テンプレートエンジンにScalaが採用されています。 その為、ViewについてはHtml + Scalaを使用する必要があります。 一部の設定ファイルを除く、それ以外の部分はJavaで記述する事が出来ます。 (ちなみに、Javaを使用せず、全てをScalaで書くことも可能です。) 私はPlayFrameworkを実際に使用したWebアプリを作成し、 別途作成したAndroidアプリとHttp通信を行うものを作った事がありますが、 その経験からすると、Scalaについては簡単な処理だけ書ければ十分です。 ControllerからViewに渡した値を使用したり、 if文やfor文を書いたりといった程度でも おそらくはご希望のアプリの実現は可能と思われます。 また、DBとのやり取りについては、 「Ebean」というO/Rマッピングをサポートしている為、 それを利用すれば、SQL文を書く必要もほぼありません。 基本的にJavaが書ければ、ScalaやHtmlといったものは、 必要最低限のレベルはすぐに身につくと思います。 これで、ご質問に対する回答になりますでしょうか?
Leonhqrt

2016/02/23 07:21

ありがとうございます。 Scala言語というものを知りませんでした。 マイナーな感じなのでしょうか? これからVMCモデルによるアプリ開発も視野に入れていきたいと思います。 詳しい解答ありがとうございました。
guest

0

いろいろな方法があると思いますが、こんな感じでしょうか。

メインで、ソケットを待ち受ける。
クライアントからの接続があったら、メインが、子スレッドを起動して、クライアントとの通信を任せて、メインは、待ち受けに戻る。

説明しているサイトがあったのでURLを書いておきます。
http://blog.goo.ne.jp/xmldtp/e/6fb516a49e2dcd3632c40a93b7bb138f

投稿2016/02/18 09:34

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Leonhqrt

2016/02/22 07:02

返信遅くなりました。 そこらへんの理解はできているのですが、 ソケット通信を行う上での注意点、ほかの通信方法との長所短所の違い、 どのモデルが最適なのかなどを提示していただきたいです。 よろしくお願いします。
guest

0

直接のお答えになりませんが、ポート番号云々の話をする前に、サーバクライアントモデルなのか P2P モデルなのかをはっきりさせたほうがよいと思います。
WEB ベースの SNS ならポート番号に悩む必要はまったくありませんし、どういうシステムを作られるおつもりなのか、よくわかりません。

投稿2016/02/18 08:51

編集2016/02/18 08:56
unau

総合スコア2468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Leonhqrt

2016/02/18 09:01 編集

1対多の関係でやっていきたいと思っていますので、 サーバクライアントモデルですね サーバーとアンドロイドスタジオで作成したもので通信を行って、ツイッターのようなものを作成する予定です。 そのアプリにはチャットなどの機能をつけたいと思っています。 サーバーにDBを作成し、そこにメールアドレスなどを格納したいと思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問