ネットワークプログラミング相談室 Port30 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2014/10/31(金) 07:57:16.24ID:2NZQQB6u
主にソケットに関しての質疑応答スレッドです。

Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/

関連リンクは>>2-10辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
ネットワークプログラミング相談室 Port29
http://peace.2ch.net/test/read.cgi/tech/1351670708/

関連スレ
ネットワークプログラミング雑談
http://toro.2ch.net/test/read.cgi/tech/1235800707/
2016/09/16(金) 11:01:23.63ID:aNdiMffG
せやなー(眠)
2016/09/16(金) 11:34:26.20ID:jw8GQ87J
そういえば
ソケットレベルで相手に届いたかどうか知る方法ってあったっけ?
実はないよね
2016/09/16(金) 12:55:25.56ID:YnaEO14a
何を気にしてる?TCPでコネクトできたら届いてるでしょ
2016/09/16(金) 14:03:45.22ID:Gz930khe
なのよねw
send()が成功したら、やったと思うしかない。
てかそれ以下ってあるんだっけ?
rawソケとか使った事ないっす。
333デフォルトの名無しさん
垢版 |
2016/09/16(金) 14:24:09.41ID:q39qStvN
ペチパーは黙ってろ
2016/09/16(金) 14:57:06.37ID:QQ/tCEl2
馬鹿につける薬はないw
335デフォルトの名無しさん
垢版 |
2016/10/19(水) 20:28:02.76ID:UPd0NLz2
サーバー側の指定ディレクトリにあるファイル一覧をクライアント側で表示したいのですがヒントください!

サーバー
http://ideone.com/fPQ4mZ

クライアント
http://ideone.com/QZQMXY

サーバーではsizeof(ent->d_name)分渡しているのですが、クライアントでsizeof(filename) 256byte分受け取っちゃっているのでここをどうしたら良いのか分かりません。
あらかじめどんな名前のファイルが来るのかわかっていればそのサイズ指定すれば良いと思うのですが。。。
あとサーバー側ではwhile((ent = readdir(dir)) != NULL)でループの終わりを告げれるんですが、クライアント側でソケットに流したファイル名を全て取得したあとの終わり方の告げ方が分かりません。
2016/10/19(水) 20:46:49.18ID:DfuX/LYm
能力不足
2016/10/19(水) 21:17:40.18ID:1vhlOQFQ
>>335
分割で届いたりもありえるから
データ先頭にデータサイズ格納させて
その分だけ受信するようにしないといけない

このデータ先頭の情報をヘッダと言う
情報は1つだけじゃなく複数でも自分が必要な分だけ自分で決めた構造で送る
2016/10/19(水) 21:28:30.33ID:Q8I9ZYJC
>>335
ftp プロトコル辺りを調べたらいいかも
2016/10/19(水) 22:03:42.68ID:DfuX/LYm
socketプログラミングを勉強しなさいw
2016/10/19(水) 22:24:13.75ID:DfuX/LYm
socketがよくわからずレスするやつら
341デフォルトの名無しさん
垢版 |
2016/10/19(水) 23:53:18.01ID:G0nEdUMs
>>337
>>338
できました。有難うございます
2016/10/20(木) 07:47:47.15ID:q6sk5dso
できましたw
2016/10/20(木) 08:53:58.32ID:t3tIMcAX
write 1回で送ったものは 1回のread で得られる保障はなく
複数回に分断されたりする

"1234" を write → "12" を read 続いて "34" を read
こういうことが、ごくごく当たり前に起きるから
2016/10/20(木) 09:54:55.77ID:q6sk5dso
それとストリームの終端なw
2016/10/20(木) 09:58:23.15ID:q6sk5dso
APレベルで送受信するときはヘッダをつけてシーケンス番号を送って、肯定応答を返すのも常識だろう。
今回は不要だが。
2016/10/20(木) 12:49:41.14ID:8pLXigSN
どんな常識だよ w
TCP 上でそんなことやるアホにはなりたくないわ
2016/10/20(木) 13:10:53.55ID:T4FOXPZS
応答で正否返すのは当然だがシーケンス番号は普通要らない気が。
非同期なプロトコルにするぐらいならコネクション増やす
2016/10/20(木) 13:11:23.77ID:9ULbv0m/
順番が入れ替わるなら別だけどねw
2016/10/20(木) 13:15:20.78ID:q6sk5dso
アホにはなりたくないわ
2016/10/20(木) 13:17:12.79ID:w5wq1yEm
むしろシーケンス番号つけて順番どうりに送るのはtcpの役割でしょ
2016/10/20(木) 13:19:07.93ID:q6sk5dso
TCPとsocketの区別がつかないアホ>>346
2016/10/20(木) 13:28:48.79ID:AB8Qragb
TCP上でアプリレベルの到達確認するのは特別な場合のみだな
2016/10/20(木) 13:31:40.96ID:q6sk5dso
おまえの作ったプログラムを教えてくれ
2016/10/20(木) 13:36:49.71ID:AB8Qragb
本当にクリティカルな場面ではアプリレベルの到達確認さえも役に立たない場合さえあるし
2016/10/20(木) 13:37:39.37ID:RRArEuwP
同期通信なら、到達確認というか応答受信は入れるな。
send->recv->send->recv->...が基本。
破壊的な何か(データベースに登録したり、ファイルを作ったり削除したり)はrecvがトリガーになることが多い。
2016/10/20(木) 13:40:33.61ID:AB8Qragb
まあ>>335のケースならヘッダもシーケンス番号も到達確認も必要ないな
送信側でデリミタ付けて受信側が対応すれば良い
2016/10/20(木) 14:00:54.08ID:q6sk5dso
>>354
負荷試験って知ってる?知らないよなw
2016/10/20(木) 14:02:17.07ID:q6sk5dso
>>356
>>345
2016/10/20(木) 14:09:20.32ID:9ULbv0m/
出てけ 馬鹿が
2016/10/20(木) 14:14:11.02ID:AB8Qragb
>>357
悪いけどお前のレスからはニワカ臭しかしないんだわ
自慢じゃないけどこっちは通信絡みの設計しだしてから言うのが恥ずかしいくらいの年月経てるから
負荷試験?当たり前だろwwwそれをドヤ顔で言う時点であーあーあのタイプかってなるんだわ
2016/10/20(木) 14:27:39.10ID:q6sk5dso
>>360
効いてる効いてる
362デフォルトの名無しさん
垢版 |
2016/10/20(木) 14:38:31.93ID:eJoj7htq
tcpでデータ受信失敗するときって
・コネクションが切られる
・コネクションが維持されたままいつまで経っても続きのデータが来ない
だけじゃないんですか
後者はアプリ側でタイムアウト時間が不明なときどう判断すりゃええの
2016/10/20(木) 14:41:22.25ID:q6sk5dso
すばらしい回答を期待します
2016/10/20(木) 14:54:10.72ID:aGg7Z+yH
>>362
ただデータが来ないだけなのか
相手が切断(通知が来ないような異常な切断)してるのかの判断って事でいいん?

>>363
(大口叩いておいて何も言えねぇ)
2016/10/20(木) 14:56:37.17ID:Ckzu+IfI
アプリ側ってどのことか不明確だけど
てきとうにこちら側でタイムアウトを決めて判断するしかなくね?
2016/10/20(木) 14:59:44.68ID:AB8Qragb
>>362
>後者はアプリ側でタイムアウト時間が不明なときどう判断すりゃええの
そういう場合はアプリレベルでのキープアライブをするのが定石だな
・相手(あるいはハブ)の電源が切れた
・ケーブル切れた
の様な場合はメッセージに対する到達確認だけでは検出できないし
2016/10/20(木) 15:04:53.95ID:0wn4S1sU
習作じゃなけりゃselect系(pollやlibevent)つかうしな。
元の要件からしたらHTTP扱う適当なライブラリつかうのが適当やとおもう。
2016/10/20(木) 15:07:11.79ID:q6sk5dso
>>364
それらを踏まえて回答するんだろw
2016/10/20(木) 15:13:23.35ID:7bfVuAd+
>>352
rfc-959とかrfc-2616とかrfc-5321とか特殊な例なんだ
へー、そーだったんだ
わー、びっくりだわ
2016/10/20(木) 16:01:08.13ID:c9u6xZBy
他はよく知らんがhttpのは到達確認っていうのか
サーバーからリクエストの結果は返すけど肝心のレスポンスは送りっぱなしでなんの到達確認もしないじゃん
2016/10/20(木) 16:08:11.02ID:6HLvHPyJ
実際に物(ファイルとかメールとか)をやり取りすろときの物の到達確認をするのと通信そのものの確認は別物だよなあ
2016/10/20(木) 16:11:00.96ID:0wn4S1sU
通信レベルの到達確認したところであんま意味ない。
受け手のメモリに取り込めたとしてもその後の扱いで失敗するかもしれんし
それ以上気にするなら処理トランザクション的なものになる。
2016/10/20(木) 16:21:29.63ID:7bfVuAd+
肯定応答と到達確認が同じだと思ってるバカが多過ぎ
2016/10/20(木) 16:29:00.38ID:aGg7Z+yH
人をバカ呼ばわりする前に正しく使おうな
肯定応答・確認応答
2016/10/20(木) 16:38:30.52ID:7bfVuAd+
今度は「確認応答」とか言いだしたぞ
このスレでは初出だな
2016/10/20(木) 16:39:33.14ID:aGg7Z+yH
このスレではって本気で言ってるのかw
世界狭すぎw
377デフォルトの名無しさん
垢版 |
2016/10/20(木) 16:44:32.11ID:NSBgUE2m
なんかスレを荒らしたようですみません。
tcp/ip通信をもっと勉強してから出直します
2016/10/20(木) 16:50:35.85ID:aGg7Z+yH
>>377
外野が勝手に盛り上がってるだけだから気にしなくていいよ
2016/10/20(木) 16:57:52.02ID:7bfVuAd+
>>377
気にすんな
バカどもが自爆しただけだから

本日のバカトップ3はミスリードの先頭を切ったID:8pLXigSN、
到達確認とか言いだしたID:AB8Qragb、
意味不明の戯言垂れ流してるID:aGg7Z+yHだな
2016/10/20(木) 17:08:59.81ID:eJoj7htq
>373
200と404を勘違いしてるのですねわかりますω
2016/10/20(木) 17:14:43.79ID:aGg7Z+yH
>>379
自分がしたレスを速攻忘れてるのかな?
>>373 > 到達確認
2016/10/20(木) 17:18:11.05ID:7bfVuAd+
>>381
お前バカ過ぎる
小学校低学年レベルの読解力 w
2016/10/20(木) 17:21:43.85ID:aGg7Z+yH
>>382
本題で反論できなかったら無理してレスしなくていいから
2016/10/20(木) 17:21:55.97ID:7bfVuAd+
>>380
3バカにミスリードされて本質を理解できなかった知恵遅れのID:eJoj7htqには敢闘賞を上げよう
2016/10/20(木) 17:23:09.34ID:7bfVuAd+
>>383
「言い出した」って言葉わかるかな? w
2016/10/20(木) 19:51:46.42ID:8pLXigSN
>>351
socket とか言ってるのはアホしかいないと言う現実 w
2016/10/20(木) 19:54:08.50ID:aGg7Z+yH
>>368は結局回答せずw
2016/10/20(木) 19:57:46.07ID:8pLXigSN
>>379
ミスリードとほざくなら TCP 上でシーケンス番号振ってるメジャーな例をよろしく
2016/10/20(木) 20:00:18.00ID:8pLXigSN
>>387
ひょっとしてタイムアウトとかキープアライブって理解できなかったのか?
2016/10/20(木) 20:56:13.55ID:7bfVuAd+
3バカが誤解して勝利宣言してるようだから言っとくけどID:q6sk5dsoはオレじゃないから
ID:q6sk5dsoが無回答と言って勝利宣言しないように

>>388
IMAPのtagとかsshのchannel numberかな
2016/10/20(木) 21:26:39.43ID:8pLXigSN
>>390
お前が誰かなんて知らんよ
どうでもいいし
>>365-366 で回答出てるからもう要らんだろって話だ

> IMAPのtagとかsshのchannel numberかな

IMAP の tag はまだ微妙だが ssh の channel は違うだろ
2016/10/21(金) 07:41:29.31ID:vSswAJTn
>>386
顔真っ赤だぞ
2016/10/21(金) 08:04:43.65ID:RUPp7NOt
>>392
技術系のスレでそんなことしか書けないならレスしなきゃいいのに...
2016/10/21(金) 08:51:15.49ID:usEI0+le
>>389
ん?>>389はID:q6sk5dsoなのか?
違うなら反応しなくてよくね?
それとも自演してるのを忘れて自爆?

>>390
違うなら反応しなくてよくね?
2016/10/21(金) 08:59:03.34ID:mAikUApA
>>393
おまえがいうな
2016/10/21(金) 09:40:32.75ID:ib3L8+77
>>394
3バカの上を行くバカが現れたか 支離滅裂
2016/10/21(金) 12:42:55.55ID:RUPp7NOt
>>394
>>395
2016/10/21(金) 12:53:28.46ID:L3BcdIIK
http://www.ranvis.com/articles/smart-questions.ja.html

●あなたの推測ではなく問題の症状を説明する
2016/10/21(金) 14:10:28.03ID:R+XAmQY/
2chよりもそれ系のMLが一番ですよ。
2016/10/21(金) 16:13:15.79ID:sCNwon4Y
それ系のML?
2016/10/21(金) 17:29:28.42ID:miJgnLBm
ちゃんと質問しないと相手にされない「それ系のML」
402デフォルトの名無しさん
垢版 |
2016/11/11(金) 16:58:55.01ID:KgVthd+h
アンドロイドスマフォとRaspaiとをLANでIOTのデータやり取りをしたいのだが、一般的
にはソケット通信をするのかもしれないが、結構メンドクサイのでなんか楽な
プロトコルってないか? HTTPとか使うと何か問題ある?
2016/11/11(金) 17:19:01.50ID:N42G00o6
HTTPで要件満たすならそれでいいんじゃない?
サーバ書かなくていいしライブラリも多い
あとはAvahiに名前解決まかせたりとか
2016/11/11(金) 17:19:41.07ID:cTRPbHlx
なんでも問題ない
2016/11/11(金) 17:20:09.93ID:cTRPbHlx
負けたw
2016/11/11(金) 17:20:53.93ID:cTRPbHlx
IOTならCOAPだろ
2016/11/11(金) 17:47:05.64ID:cTRPbHlx
使わなくてもいいけど一応おさえておいてね
https://iot.eclipse.org/
408デフォルトの名無しさん
垢版 |
2016/11/11(金) 18:24:03.57ID:KgVthd+h
なるほど、coapか、そういうのがあるんだね。 
2016/11/11(金) 18:32:21.53ID:cTRPbHlx
趣味か仕事で使うかの違い
2016/11/11(金) 18:37:42.50ID:JQalwGbJ
俺はラズパイ上にwebサーバー立ててwebアプリから操作できるようにしてる
そうすれば自分でプロトコル作ったりとかいらないし、スマホからもパソコンからも操作できる
2016/11/11(金) 18:56:16.19ID:KgVthd+h
>410
そういう方法があるのか。えっ、RASPAIにはサーバーは最初からは入ってないの?
サーバーがあるという前提でそれにプロトコルを乗せるんではないのか?
2016/11/11(金) 20:04:50.02ID:JQalwGbJ
なんか「サーバー」というものに対して根本的な勘違いをしているような...

サーバーは普通のソフトの一つ
webサーバーとかメールサーバーとかいうけどそれはそのサーバーソフトのこと
(もしくはそのソフトを稼働させているマシンのこと)

webサーバーはhttpというプロトコルを実装したソフトだし、メールサーバーならsmtpとかのプロトコルを実装したソフト

ラズパイにはhttpを実装したソフト、つまりwebサーバーは最初からは入ってないから自分で入れる必要がある
2016/11/11(金) 21:39:54.65ID:Uglwx9gP
ただの組み込み
2016/11/12(土) 04:03:27.04ID:k74syi4X
>412
えええ、そういう意味なの? webサーバー=httpサーバーってことなの
「WEBサーバー」って、いろんな機能が入ったサーバーの総称かと思っていた。
メールサーバーは「メールができるだけだろう」くらいにはわかっていたが、webサーバー
ってのはメールもhttpもsmtpもできるんだろうと思ってた。
2016/11/12(土) 04:18:09.98ID:QcW9Y5By
勉強して出直しておいで
2016/11/12(土) 04:18:50.02ID:6wPviZ3t
これは斬新な切り口
2016/11/12(土) 04:20:23.72ID:xxkpve4k
ωωω
418デフォルトの名無しさん
垢版 |
2016/11/12(土) 04:49:17.27ID:k74syi4X
「webサーバーを立てて」といわれるとかなり大層なものを立ち上げることをイメージ
するから、10MbyteのHttpソフトをロードするのとはちょっと想像できないよな。

WEBサーバー立ち上げ100万円です。
で設置して「えっ、メールするには別途100万円かかるの?」
ってなると詐欺かとおもってしまう。W
419デフォルトの名無しさん
垢版 |
2016/11/12(土) 07:21:59.80ID:k74syi4X
うおー調べてみたら結構たいへんだな。「WEBサーバー立てる」でも「メールサーバー
追加100万でつ」でもまあ許したる。俺は300万もらう。W
2016/11/12(土) 08:12:43.51ID:NsoJY3jp
馬鹿はどうしようもない、踏み台を作って他の人に迷惑をかけるw
2016/11/12(土) 09:19:47.96ID:cY8zOPne
>>419
チャット クライアント サーバー プログラミング
くらいで調べてみたらどうなるんだ
こんなんでできんの?とか思うんだろうな
422デフォルトの名無しさん
垢版 |
2016/11/12(土) 10:26:13.91ID:k74syi4X
コピペで終わり。300万。というわけにはいかんか?
423デフォルトの名無しさん
垢版 |
2016/11/12(土) 10:33:49.81ID:k74syi4X
>421
調べてみたが、RasPaiにはあまり関係ないぞ。

>406
coapはUDPじゃないか。通信の信頼性がないだろ。ダイジョブか?
424デフォルトの名無しさん
垢版 |
2016/11/12(土) 10:39:31.37ID:k74syi4X
ちょっと質問
1.RasPai2に WEBサーバーを乗せたい。何がいい。 目的 Httpでスマフォ接続
2.Wifiのアクセスポイントを入れたい。何がいい? 目的 Wifiダイレクト
425デフォルトの名無しさん
垢版 |
2016/11/12(土) 10:43:18.32ID:k74syi4X
候補
 Apache
 hostapd
希望 バカチョンでインストール
2016/11/12(土) 11:13:24.94ID:NsoJY3jp
>>423
仕様(RFC7252)を読めよ。eclipseのプロジェクトは実装例。RESTFUL(HTTP)でもできるしUDPでもセキュアにできる
ttp://coap.technology/
2016/11/12(土) 11:15:51.59ID:NsoJY3jp
おっと、送信失敗したら何回かリトライするんだろ普通、TCPも同じだろ
2016/11/12(土) 11:17:31.16ID:cY8zOPne
>>423
いや、サーバーについてだ
2016/11/12(土) 11:34:34.32ID:NsoJY3jp
>>423
お前の知識の信頼性の方がない、>>426,427はお前には無理なのでスルーしていいぞ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況