2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【プログラミング】P2Pのメッセージアプリ作りたいんだが

1 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:49:55.813 ID:m5Xc0UaZ0HLWN.net
結局どういう仕組みなんかわからんのだがどうすれば良いんだ?

2 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:51:28.471 ID:m5Xc0UaZ0HLWN.net
普通のHTTP通信は
サーバーにAPIを作る
クライアントからAPIを叩いてアクセスしてメッセージ入力
相手方のクライアントからAPIを叩いてアクセスして閲覧
って感じじゃん?
P2Pだとどうなんの?

3 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:52:52.582 ID:PRk7V20N0HLWN.net
まずPSPを用意します

4 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:53:10.001 ID:m5Xc0UaZ0HLWN.net
>>3
関係あるかそれ?

5 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:53:19.794 ID:10wrGe8hdHLWN.net
犯罪に使うの?

6 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:53:58.027 ID:m5Xc0UaZ0HLWN.net
>>5
違うよ?
LINEが死ぬらしいからサーバー代出さなくてもいいメッセージアプリ作れたらなと思っただけさね

7 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:54:34.525 ID:WLHilFTZ0HLWN.net
通信先を特定して通信したらいいじゃん

8 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:56:41.372 ID:PRk7V20N0HLWN.net
LINEが死んだら死んだでまた替わりが出るだけだろ

9 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 09:58:32.303 ID:OlwjGol3dHLWN.net
p2pのチャットなんかサンプルでいくらでも転がってるがな
お前の大好きなchatgptにきけ

10 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:03:16.422 ID:m5Xc0UaZ0HLWN.net
>>7
HTTP通信でいいの?

11 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:03:28.356 ID:m5Xc0UaZ0HLWN.net
>>9
マジ?

12 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:05:42.679 ID:6bsaCcuD0HLWN.net
通信相手を特定する必要がある
ユーザーに各マシンのIPやら識別子を入力させるか、その部分だけ管理する中央サーバがいるな

13 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:12:21.968 ID:m5Xc0UaZ0HLWN.net
>>12
そのくらいならデータかさまないし用意してやっても良い
てかLINEの友だち登録みたいにQRにデータ仕込めないの?

14 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:13:59.777 ID:6bsaCcuD0HLWN.net
>>13
行けると思うけど単純に平文で送ると問題ありそうだから暗号化と復号できる仕組みもいる気がするな

15 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:15:47.170 ID:t9taNYhi0HLWN.net
待機用のアプリを起動(IPアドレスを用意しとく)
接続用のアプリを作りIPアドレスを入力して接続する
待機用アプリと接続用アプリ両方ともにチャット用のフォーマットを作り
送られてきた文字を配列で保存して保存していく
入力すると相手のアプリに飛ばして表示するを繰り返す
これでチャットアプリ作れた
もっとちゃんと作るならサーバーを通した方が良い気がした
クライアント→サーバ→クライアントみたいにする

16 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:17:36.999 ID:m5Xc0UaZ0HLWN.net
>>14
なるほど

17 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:17:39.340 ID:Jgy2vyHfMHLWN.net
普通の通信がp2pだよ
相互クラサバにするだけ

18 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:18:36.545 ID:m5Xc0UaZ0HLWN.net
>>15
クライアントサーバーならサーバー代かかっちゃうだろ

19 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:19:28.972 ID:m5Xc0UaZ0HLWN.net
>>17
なるほどHTTPのRESTAPIで叩いてるエンドポイントを相手の端末にするいめーじ?

20 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:20:20.759 ID:Jgy2vyHfMHLWN.net
>>14
>>16
いらんぞ。
インターネット経由なら普通に暗号化される
LANでもルータで勝手にやるから見れん
バカな垂れ流しHUBで直結しててパケットモニタ直結される恐れがあるのならいれる

21 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:21:41.572 ID:vCJEX53Y0HLWN.net
C#で作るの?w

22 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:22:11.725 ID:t9taNYhi0HLWN.net
>>18
いや
うーんとね
クライアントアプリ→受信用アプリ→クライアントアプリにしたかったのよ
クライアント送信用アプリ→クライアント受信用アプリで作ったんだが
わかる?

23 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:22:34.244 ID:6bsaCcuD0HLWN.net
P2Pて中央サーバ無しだと相手方のIPが変わったら都度再登録になるし、アプリ起動してないと送信データが相手に届かない(アプリ起動しなおしてもそれまで送られてきたデータは受信できない)みたいな問題点はあるよ
ただアプリさえ持っとけば通信可能かつ傍受されなきゃメッセージは自分と相手の端末にしか残らないっていうセキュアな面もある

24 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:22:59.466 ID:Jgy2vyHfMHLWN.net
>>19
例えばc♯ならtcpclientあるだろ
socketあるだろ?

サーバになる側が80でlistenして接続来たらポート情報返してオープンし、そこにコネクトしてきたらサーバでバインドする。あとは送り合う

25 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:23:09.291 ID:m5Xc0UaZ0HLWN.net
>>20
ふーん

26 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:23:34.068 ID:m5Xc0UaZ0HLWN.net
>>21
そうだけど?
スマホアプリも作れます

27 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:23:41.296 ID:6bsaCcuD0HLWN.net
>>20
QRコードにIPアドレスや識別子を乗せる場合の話ね
そこの部分は他のアプリでも見れる訳だから

28 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:24:28.766 ID:m5Xc0UaZ0HLWN.net
>>22
なるほど受信と送信でアプリ分けたってことか?
なんで一緒のやつ作らなかったの?
作れないとかあるの?

29 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:25:20.540 ID:Jgy2vyHfMHLWN.net
>>28
スレッドでわける

30 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:26:03.539 ID:m5Xc0UaZ0HLWN.net
>>23
IPは固定アドレスにしてれば問題ないけど
>>アプリ起動してないと送信データが相手に届かない(アプリ起動しなおしてもそれまで送られてきたデータは受信できない)みたいな問題点はあるよ
↑は致命的な欠陥だな
もうメッセージアプリの意味を成さない

31 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:27:26.799 ID:Jgy2vyHfMHLWN.net
なぜ送受信が別れるか
受信で定周ループに突っ込みpeekするのはめんどい
なのでrecvに直接突っ込んで受信車で待つのが制御で良くやる

32 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:29:45.552 ID:m5Xc0UaZ0HLWN.net
>>29

スレッドってCPUの話?
それとも会話のスレッドを分ける必要があるって話?

33 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:29:58.010 ID:t9taNYhi0HLWN.net
>>28
そうそう
クライアントアプリは送信も受信も両方出来るようにして
クライアントアプリとは別に中間の受信用アプリを作りたかったんだ
というかクライアントアプリ→クライアントアプリでもいいけどさ
まあ理由は簡単で送信用アプリと受信用アプリに分けた方が簡単じゃん?w
ちなみに原理はどの言語でも同じだから何でもいいと俺は思うわ

34 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:30:57.339 ID:m5Xc0UaZ0HLWN.net
>>31
Reactiveプログラミング的な?

35 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:31:12.664 ID:Jgy2vyHfMHLWN.net
>>32
cpuのスレッド。1スレッドなら反応が悪くなる

36 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:31:50.395 ID:m5Xc0UaZ0HLWN.net
>>33
なるほど一緒にすることもできるんだな
サンクス

37 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:32:26.869 ID:Jgy2vyHfMHLWN.net
命令来てから100ms以内に届かないようなソフト作ったらぶん殴られるのが制御の通信

38 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:32:53.133 ID:m5Xc0UaZ0HLWN.net
>>35
なるほど
送信は送信向けのスレッド使って受信は受信のスレッドを使うことで管理しやすく作りやすいってことね

39 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:33:26.075 ID:m5Xc0UaZ0HLWN.net
>>37
LINEみたいなメッセージアプリなら問題ないけどね

40 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:34:12.011 ID:fCnjNOd00HLWN.net
スマホ用でピュアP2Pは参加してる人数がある程度いないと難しい
人数さえいれば参加者のIPを共有して再接続のたびに自身が持ってるリストの全員に問い合わせってのを相互にやることで維持可能

41 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:35:33.971 ID:m5Xc0UaZ0HLWN.net
>>40
なるほど誰かが起動さえしてればそこから辿れるのか
だとしても寝るときはみんな寝てるしな…
その時会話見れなかったやつは一生見れないのか…

42 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:35:53.480 ID:m5Xc0UaZ0HLWN.net
なかなか問題ありますなぁ…

43 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:38:01.190 ID:t9taNYhi0HLWN.net
>>36
単純に開いた時にシーケンスを用意して
送信しますか?受信を待ちますか?みたいなのを用意して
送信する→IPアドレスを入力してください。
その間に受信用のクライアントを開いて受信を待ちますにして待機させて
って感じにしたらいいだけなんだけどなw
接続完了!チャットを送りますか?みたいな感じだな
たぶんやればわかる。どちらかを送信用、どちらかを受信用アプリを作って
アプリ開いた瞬間に受信用アプリは接続まち状態にして作った方が楽

44 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:39:35.571 ID:6bsaCcuD0HLWN.net
チャットツールならメッセージは送りたい相手とだけやり取りしない?
メッセージ部分も不特定多数のユーザーにばらまくなら復元可能だが
そうじゃないなら相手がオフラインだと消えるよ
まあオフラインなら送れないようにするのが正しいかもしれんが

45 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:40:31.682 ID:fCnjNOd00HLWN.net
>>41
DHTでログを分散管理とかしとけば後で接続してもみれるし送信者もいらない

46 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:40:39.891 ID:t9taNYhi0HLWN.net
ちなみにサーバーはいらん
IPアドレス何番か忘れたけど
自分に送信するって番号があるんだ
NEの奴に聞けばわかりそう
そこに送信すると一度グローバルネットワークに飛んで自分に戻ってくる
で、受信用アプリで受信完了!になって
両方からチャットを送信できるようになって表示できる
ウィンドウズ上で、アプリを多重に起動できるようにして窓2枚で
グローバルネットワーク利用してチャットできる

47 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:41:17.469 ID:m5Xc0UaZ0HLWN.net
>>43
送信受信ってメッセージのことかと思ったけど接続する通信のことか
どっちも送受信で接続ってできるの?
そっちのほうがユーザーが使いやすいと思うが

48 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:42:24.782 ID:Jgy2vyHfMHLWN.net
>>46
127.0.0.1かlocalhostだろ
自己メッセージじゃなくね

49 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:42:42.695 ID:m5Xc0UaZ0HLWN.net
>>44
Lineみたいにメッセージして読まれなくても後で読めるみたいなのが理想だったが難しそうだな
バッググラウンドで受診だけ動かしてくという手もあるがスマホだと難しかもね

50 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:44:30.148 ID:m5Xc0UaZ0HLWN.net
>>45
なるほど
送った側にログとして保存しとけば再接続したとき読みにいけるって感じかな?
だとしても一瞬は両者がつながる時間が無いといけないのか(1対1の場合)

51 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:47:40.483 ID:fCnjNOd00HLWN.net
>>49
送りたい相手の鍵で暗号化して今いる他の人に預けておくだけよ?

52 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:50:06.308 ID:t9taNYhi0HLWN.net
>>47
シーケンスで分ければいいのよ
最初に送信しますか?受信しますか?って画面を作る
送信します→IPアドレスを入力してください。って画面を作ればいい
受信しますの場合は、待機中です。って画面を作ればいい
ちなみに片方を待機中にしないといけないのよ
で、片方から送信するのね
送信成功したらつなげるの
そうすると両方の画面で通信成功!って画面にして
チャットが送れるようになる
単純な話でその画面を作らずに
いきなりIPアドレス入力できる送信用アプリと
いきなり受信モードにする受信用アプリを作って
同期させてチャットできるようにしたのよ
この方が作るの楽じゃん?

53 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:50:38.891 ID:m5Xc0UaZ0HLWN.net
>>51
でも他の人がアプリ閉じちゃったら無になるんでしょ?

54 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:51:34.556 ID:t9taNYhi0HLWN.net
>>48
それだったかなぁ
127.0.0.1だったかなぁ
忘れたなwコードみれば書いてあるけどw

55 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:52:11.770 ID:m5Xc0UaZ0HLWN.net
>>52
なるほど
どっちみち片方は待機しないと接続できないのね

56 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:54:13.339 ID:fCnjNOd00HLWN.net
>>53
ネットワークに参加している全員がいなくなったら再びネットワークを再開するためには誰かがip打ち込む必要がある
でも送信したメッセージはオーバーレイネットワークが復旧次第受け取れる

57 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:54:45.021 ID:m5Xc0UaZ0HLWN.net
なんかメッセージアプリってやっぱどっかにサーバー立てといたほうが便利なんだな…

58 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:55:10.937 ID:t9taNYhi0HLWN.net
>>55
できない
接続して同期しないといけないのよ
だから接続待ち状態にしてwhileとかでループさせないといけない

59 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:55:57.289 ID:t9taNYhi0HLWN.net
>>57
だからそうなるんだってwwww
クライアント→サーバ→クライアントで作ると良い感じに思える

60 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:57:24.413 ID:j97ycs+rHHLWN.net
本当にメッセージやりとりするだけならIP直打ちでhttpのオプション投げれば終わるじゃん

61 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:57:26.510 ID:m5Xc0UaZ0HLWN.net
>>56
オーバーレイネットワークで接続が切れる前に通信したやり取りは復旧されるのね
ということは1対1のメッセージアプリでも問題なさそうなのか

62 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:58:10.247 ID:m5Xc0UaZ0HLWN.net
>>58
なるほどね
>>59
そうみたいだね

63 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:58:29.395 ID:m5Xc0UaZ0HLWN.net
>>60
ほんと?

64 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 10:58:39.527 ID:t9taNYhi0HLWN.net
ちなみにサーバ用意した方が良いになって
そこでサーバーの知識が必要になるんだが
俺LPICとかすら当時知らなかったからそこで詰んで
チャットアプリだけで終わった歴史だわ
そこからLPICとCCNAの勉強を始めたけどそこで頓挫してるな
でも送信用アプリと受信用アプリまでは作れるから
そこまではやったら?って感じ
でも、何かやるにもサーバーになってくる気がする

65 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:01:12.353 ID:m5Xc0UaZ0HLWN.net
>>64
サーバー立てる方式ならSignalRというやつでチャットアプリ作ったことあるよ

66 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:03:00.783 ID:j97ycs+rHHLWN.net
>>63
ごめんうそ

67 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:04:28.033 ID:m5Xc0UaZ0HLWN.net
>>66
んだよ!

68 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:06:10.010 ID:t9taNYhi0HLWN.net
あー127.0.0.1でやってるなループバックアドレスでいいのか
2015年に作ってるわw懐かしいwこのころはLPICの勉強前だw

69 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:07:00.030 ID:FtdTiJcAdHLWN.net
>>24
これでいいじゃん
シンプルにソケット通信

70 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:07:27.932 ID:t9taNYhi0HLWN.net
>>65
よくわからんw
俺のはWin32かDirectXのやつでC++で作ってるからw

71 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:11:23.202 ID:m5Xc0UaZ0HLWN.net
>>70
なるほどね

72 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:12:32.154 ID:t9taNYhi0HLWN.net
なんだろうwinsockなのかなWin32の機能か

73 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:13:08.059 ID:t9taNYhi0HLWN.net
あーおもいだしてきた
そうそうwinsockだからウィンドウズサーバーじゃないと
駄目なのかなぁとかってなった記憶があるな

74 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:13:33.478 ID:m5Xc0UaZ0HLWN.net
WebソケットってやつだSignalRはね

75 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:16:40.980 ID:t9taNYhi0HLWN.net
>>74
詳しくないけど
今はWEBソケットが主流なはず
ネットワークの世界であぷせでねでぶのやつで
WEBソケットはHTTPの通信何だと思う

76 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:17:50.934 ID:m5Xc0UaZ0HLWN.net
>>75
そうだね

77 :以下、?ちゃんねるからVIPがお送りします:2023/10/31(火) 11:21:31.707 ID:Jgy2vyHfMHLWN.net
>>75
主流というか、それはTCPIPだよ

総レス数 77
22 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200