08/10/05 22:38:21
>>115はどう見てもC言語だろ
578:デフォルトの名無しさん
08/10/06 00:17:33
#include<stdio.h>でわからないとは・・・
579:デフォルトの名無しさん
08/10/06 00:24:34
何言語か書いていないとわからないよ
ソース見てわかるくらいなら解説ページなんて見ない
自己満足のオナニーページ認定
580:デフォルトの名無しさん
08/10/06 00:31:00
それ、野球のカーブの投げ方とかの解説ページ見て
「グローブって何だよ!バットって何?書いてないとわからないよ」
と言ってるのと同じようなレベルだぞ
581:デフォルトの名無しさん
08/10/06 00:39:49
>>580
なんて言われても実際わかんない人がいてるのは現実。
誰もが知ってる常識だと一方的に決め付けるのはどうなんだか
プログラムなんて見てわかる人のほうが少ないよ
1億2千万人のうちC言語だとわかる人は何人いてるんだろうか?
誰でも知ってるっていうからには半分以上の人が知っているとでも思ってんのかな?
グローブやバットは半分以上の人が知ってるだろうけどねwww
582:デフォルトの名無しさん
08/10/06 00:42:23
普通あのソース見て、Cだと気づかないようなレベルの奴は
この板見ないし、ましてこんなスレも除かない
そして、WinSockの解説ページなんか絶対開かないw
583:デフォルトの名無しさん
08/10/06 00:51:30
>>582
>>571
584:デフォルトの名無しさん
08/10/06 00:52:25
見てわかんない人は普通以下ってことでいいよ
どこからが普通なのかわかんないけどね
敷居高いですね
585:デフォルトの名無しさん
08/10/06 00:54:04
>>583
私だとバレてたのか^^
まぁそう言わずに仲良くしよう
これからも応援よろしく^^
586:デフォルトの名無しさん
08/10/06 00:54:57
ネットワークプログラミングってのは敷居高いよ
587:デフォルトの名無しさん
08/10/06 01:18:28
だーかーらー知能障害の相手すんなって言ってるでしょうよ
どうしてそうどいつもこいつも子供なんだよw
スレ潰したいのかお前ら
588:ひとりごと
08/10/06 01:24:07
独り言。
引用 URLリンク(www.geocities.jp)
> さて、このテキストを読む対象となる人は、
> 1.C言語をある程度理解できる方
> 2.MicroSoft Visual C 6.0 以上をお持ちの方
ほぅ、C 言語とな。
589:デフォルトの名無しさん
08/10/06 05:48:36
>グローブやバットは半分以上の人が知ってるだろうけどねwww
なんだ、自慢の息子とおいなりさんのことか
_、_
ヽ( ,_ノ`)ノ
へノ /
ω ノ
∪ >
590:デフォルトの名無しさん
08/10/06 08:19:21
外人とビジネス交渉したいからといって、英語のビジネス例文集を教えてもらったは良いが
それが英語なのかスペイン語なのかわからなくて癇癪おこしている楽しいやつがいると聞いてやってきました
591:デフォルトの名無しさん
08/10/06 10:46:34
ここ数日間のバカはどう見ても釣りだよな?
592:デフォルトの名無しさん
08/10/06 14:38:16
釣りじゃないだろ
金が絡んで頭が逝っちゃってる
593:デフォルトの名無しさん
08/10/06 23:30:49
質問です。
winsockで複数のスレッドから排他制御なしに同じソケットに対してsendを呼び出すと問題ありますか?
594:デフォルトの名無しさん
08/10/06 23:36:59
やってみろ、アホ
595:デフォルトの名無しさん
08/10/06 23:43:28
>>593
NTのAPIはスレッドセーフだからAPIは正しく動作するだろうけど、各スレッドの動作順が不明だから思い通りにはならないぞ。
596:デフォルトの名無しさん
08/10/06 23:44:49
やってみたけど特に問題は起こりませんでした。
たまたま問題が起きてないだけなのか、本当に問題がないのか、アホだから分かりません。
597:デフォルトの名無しさん
08/10/06 23:48:10
>>595
サンクスです。
どっちが先に呼ばれても問題はないです。
598:デフォルトの名無しさん
08/10/07 01:03:21
WinSock(TCP)で相手が最初にパスワードを送ってきて
合っていれば送信、間違っていれば切断というのをやっています
パスワードをチェックして間違っていると判定したときに、
接続相手に間違ってる旨のメッセージを送った後にシャットダウンしてクローズしているのですが
シャットダウンが早すぎるらしく、相手にメッセージが届く前にRCV=0になってしまいます
応急処置として1秒ほど待機させてからシャットダウンしていますが、
相手へのSENDが完了するまで待機する方法はないでしょうか?
599:デフォルトの名無しさん
08/10/07 07:29:27
>>597
TCPの話だよね?
どちらが先に呼ばれても問題ないってどいう状況?
送信データが全て1バイト単位で意味を成す場合しか思いつかない。
600:デフォルトの名無しさん
08/10/07 07:32:20
write( fd, WRONG_PASSWORD)
shutdown(fd, SD_WRITE)
while( read(fd, buf) != 0 )
close(fd)
みたいなコードで、close(fd)するときに、
相手にメッセージが届いてない事があるって話?
601:デフォルトの名無しさん
08/10/07 07:33:00
あ、while行の最後にセミコロン忘れた
602:デフォルトの名無しさん
08/10/07 07:38:53
>>599
それから察するに、数バイトまとめて送ったとしても
そのデータが混ざり合う可能性があるってこと?
603:デフォルトの名無しさん
08/10/07 12:11:39
>>602
そうならないと明記されていればいいんだが
見たことないや
604:デフォルトの名無しさん
08/10/07 12:43:11
>>600の方法で解決しないなら、相手側も疑ったほうがいいんじゃないか。
エラーのレスを受け取る側が切断かけたほうがすっきりすると思うよ。
605:デフォルトの名無しさん
08/10/07 12:45:41
>>602
APIで渡した順に送られる。混ざることはない。
複数スレッドでひとつのソケットに書き込むと、渡す順序を制御できない。
606:デフォルトの名無しさん
08/10/07 14:46:38
>>604
本人じゃないけど、同じことで悩んだことがあるので便乗質問
>>600の方法って、shutdownすると「通信相手がclose関数を呼ばなくても」近いうちにreadが0返すようになるんでしょうか?
エラーレスをうける側(上記でいう通信相手)が意図的にケーブルぶっこぬくこともあり得るので、通信相手のcloseを期待したくないところ。
607:デフォルトの名無しさん
08/10/07 16:31:11
>>602
数バイトをまとめてsendしたとしても、一度に全てを送れる保証はないから、
sendの戻り値をチェックしながらループまわすことになる。
そうするとデータが混ざり合う可能性があるんじゃないかな。
608:593
08/10/07 20:17:08
>>607
確かにそのとおりだ。
送れた部分と送れなかった部分の隙間に一方のスレッドのデータが入り込むことがありますね。
ありがとうございました。
609:598
08/10/07 23:06:19
>>600
writeとreadってのがよくわからんのですが
sendとrecvみたいなものですか?
fdはSocketですよね?
610:デフォルトの名無しさん
08/10/08 06:07:58
>606
答えはNO。というか、相手から(close/shutdownして)FINが
届く以外で、readが0を返す事はないはず。
タイムアウトを掛けたいなら、SO_RCVTIMEO設定して-1を見るとか
selectで待つとか別の仕組みを混ぜる必要がある
どっちにしろ、600のコードはreadのエラー処理をする必要があるけど
611:デフォルトの名無しさん
08/10/08 06:53:04
>609
そうだね。まあ、概念コードだから。
Winsock系とBSD系が変な感じで混ざっててゴメンよ
612:デフォルトの名無しさん
08/10/09 19:04:59
>>611
どうやらShutdownで読書両方とも落とすのが問題だったみたいです
しかしrecvだと、実行時にスレッドがブロッキングされてしまうのです
613:デフォルトの名無しさん
08/10/09 22:38:54
>相手へのSENDが完了するまで待機する方法
なんでしょ? 待ちたいの?待ちたくないの?
614:デフォルトの名無しさん
08/10/10 14:40:57
プロトコルメソッドってどういう意味?
615:デフォルトの名無しさん
08/10/10 20:37:32
文字通り
616:デフォルトの名無しさん
08/10/13 02:36:08
telnetなんですけど
画像とか見れるんですか?
コマンドラインの操作だと聞いたことがあるんですけど
テキストでの交信だけでしょうか?
画像を見るには特別な知識や技術は必要ないですか?
よろしくお願いします
617:デフォルトの名無しさん
08/10/13 02:46:28
困ったちゃん登場
618:デフォルトの名無しさん
08/10/13 02:52:11
アスキーアートを画像と思えば・・・!
619:デフォルトの名無しさん
08/10/13 03:24:26
banner
620:デフォルトの名無しさん
08/10/13 10:55:48
バイナリデータをバイナリエディタにコピーして保存
で分かってくれる相手なのかこれは
621:デフォルトの名無しさん
08/10/13 12:57:43
あれ? なんか mplayer -vo aa がいつの間にか変なコンソール開くようになってる…
622:デフォルトの名無しさん
08/10/13 13:27:03
telnetでヤフートップページや動画のyoutubeやニコニコ動画は見れますか?
623:デフォルトの名無しさん
08/10/13 13:35:26
ソースは見える
624:デフォルトの名無しさん
08/10/13 17:05:41
telnetで写真や動画は見れないですか?
625:デフォルトの名無しさん
08/10/13 17:40:55
写真や動画は圧縮されていますので
あなたの脳内演算でその圧縮を展開できるのなら見れるかもしれませんが
626:デフォルトの名無しさん
08/10/13 18:19:07
圧縮されていないものもあるので、符号化とするべきかな。
627:デフォルトの名無しさん
08/10/14 15:23:52
こんちわ
多重ログイン規制のサイトに多重ログインする方法教えてください
匿名串だめでした
他になんかない?
628:デフォルトの名無しさん
08/10/14 16:06:41
どのサイト?
629:デフォルトの名無しさん
08/10/14 19:43:54
>>627
スレ違いじゃ?
630:デフォルトの名無しさん
08/10/14 20:03:19
>>627です
>>628さん
気にかけてくれてくれてありがと
そのサイトを教えるかはちょっと考えてみるよ
>>629
自分的にはここだと思ったんですけど
他に適所があれば誘導お願いします
誘導が無い場合は引き続きこちらで解答待ちします
よろしく
631:デフォルトの名無しさん
08/10/14 20:04:20
スレ違い。
適切なスレは自分で探せ、アホ。
632:デフォルトの名無しさん
08/10/14 20:06:25
それはプログラミングに関する相談?
規制を回避して多重ログインするようなプログラムを自分で開発したいからヒントをくれということ?
633:デフォルトの名無しさん
08/10/14 20:48:29
>>631
アホは余計だろ
死ねやカス!
634:デフォルトの名無しさん
08/10/14 21:02:32
>>627
そのサイトの管理者に聞けばいいよ。
635:デフォルトの名無しさん
08/10/14 21:06:15
マルチホームとポリシールーティングで解決
636:デフォルトの名無しさん
08/10/14 21:29:47
>>634
お前ほんとくだらない奴だな
死ねよ
親も喜ぶだろ
637:デフォルトの名無しさん
08/10/14 21:31:53
>>627
またお前か
たとえ5年かけたところで無理だからやめとけ
一生かかってもできないかもしれない
株かデイトレードかそういうもんで稼ぎたいようだが
素直にアルバイトしたほうがいいぞ
できないことにいつまでも固執するのは愚かなことだ
638:デフォルトの名無しさん
08/10/14 21:34:48
以降スルーでOK
639:デフォルトの名無しさん
08/10/14 23:17:59
>>637
あと少しってところだと思うんだ
2年かけてわかったこと
自分がゴールにしていた地点は他の連中からすれば初歩の初歩
全くのド素人のレベルだったんだ
がっくりきたけど
改めて次のゴール目指して頑張ってる
ちょっと自分には無理かなって諦めかけてたんだけど
さすがに2年間勉強した甲斐あって
今度は順調に進んでる
もう少しっていうか今でもテストの結果は満足できるものになってきた
でももう少しなんだ
応援ありがと^^
多重ログインの件は解決できそうです
ありがとでした
640:デフォルトの名無しさん
08/10/14 23:31:32
WinSock の inet_itoa はマルチバイトコードなのですがユニコード版はありませんか?
なかったとしてunicode to multibyte を使えばいいのですか?
641:デフォルトの名無しさん
08/10/14 23:40:43
WSAAddressToStringとかWSAStringToAddressとか
642:デフォルトの名無しさん
08/10/14 23:48:26
GetNameInfoWでも使えば。
まあ、そーゆーAPIのW版も、あったところで、
punycode解釈してくれるわけでもないんだけどネ。
643:デフォルトの名無しさん
08/10/16 02:18:55
WinSockのTCPで送信側にてsendを行った後に、受信側に確実にデータが届いたことを認知するためには、
下記のように受信側から応答信号を返してもらいそれを待つべきでしょうか。
<AからBへの送信の手順>
A側 B側
send --> recv データ
recv <-- send 応答
上記のような手順では、AとB両方から同時に送信を行った場合、
双方でデータ受信と応答受信がごちゃまぜになり混乱を招くようにも思いますが・・・。
644:デフォルトの名無しさん
08/10/16 08:03:51
sendするデータと応答信号にIDつけるようにして、一致を見ればよいのでは
>AとB両方から同時に送信を行った場合
キモいなあ
tcpを2本使うか、それがだめなら1本の中に多重化する仕組みをいれたほうが
いいと思うよ
あとA,B側それぞれの状態遷移をはっきりさせとかないと
そのうち発狂する予感
645:デフォルトの名無しさん
08/10/16 10:04:24
送信データと送信応答の識別子をヘッダに持たせれば?
コネクション一本で作れない人間が二本でなんとかなるとも思えんがね。
646:デフォルトの名無しさん
08/10/16 22:35:02
TCPなのにさらに応答確認するん?
647:デフォルトの名無しさん
08/10/16 22:51:59
は?
648:デフォルトの名無しさん
08/10/16 23:56:09
HTTP でも FTP でも上位レイヤーでみんなレスポンス返してるだろ!ボケがぁ
649:デフォルトの名無しさん
08/10/18 18:39:20
FTPにもHTTPにも643の言う意味での応答確認のレスポンスはないぜ?
HTTP:
c->s : データ寄越せ
s->c : おらよ。[データ]
c->s : ありがとうございます <= ここはないだろ
FTP:
c->s : データ寄越せ
s->c : おらよ。
s->c(2):[データ]
s->c : 終わったから。
c->s : ありがとうございます <= ここはないだろ
650:デフォルトの名無しさん
08/10/18 19:16:36
それマジレス?
651:デフォルトの名無しさん
08/10/18 19:23:01
はい
652:デフォルトの名無しさん
08/10/18 19:48:23
>>650
>>649はその通りだと思うが
653:デフォルトの名無しさん
08/10/18 20:51:05
HTTPって応答にデータが乗ってるだけじゃねぇの?
○ >>643
send → : データ送信
recv → : 正しく受け取りました
○ HTTP
c→s : データ送信(リクエスト)
s→c : 正しく受け取りました(レスポンス)
ってことだろ。
FTPは知らん。
654:デフォルトの名無しさん
08/10/18 20:56:15
>>643では省略されてるけど、Aのsendの前にBからデータ要求があるんだろ。
655:デフォルトの名無しさん
08/10/18 20:57:53
>>649
なぜデータを「送る」話でGETの例を出すんだ
656:デフォルトの名無しさん
08/10/18 21:43:06
>>655
サーバーがデータを「送る」からだろ
657:デフォルトの名無しさん
08/10/18 22:12:24
>>654
何話を勝手に変えてんだよ?
658:デフォルトの名無しさん
08/10/18 22:32:50
>>643出て来い!!
659:デフォルトの名無しさん
08/10/18 22:52:24
>>643のどこをどう読んだら曲解するのかわけわからん
660:デフォルトの名無しさん
08/10/19 01:32:58
まぁ結論、TCPなんだから送れば必ず届く。
661:デフォルトの名無しさん
08/10/19 11:22:41
>660
そんなわけねー。
TCPならケーブル抜いても届くのかよw
662:デフォルトの名無しさん
08/10/19 12:47:29
>>661
おまいには失望した
663:デフォルトの名無しさん
08/10/19 13:36:54
子供の屁理屈みたいw
地球崩壊しても届くのかよwみたいなw
664:デフォルトの名無しさん
08/10/19 14:14:20
送れば届くというよりかは、届いたものは正しい、という方がTCPを説明するには良いような
665:デフォルトの名無しさん
08/10/19 14:41:14
RSTでセッションが終了した場合以外は、送れば届く。
666:デフォルトの名無しさん
08/10/19 16:53:50
論理的に絶対届くって話になると
661みたいに物理的に切れたら無理だろといいたくなる気持ちもわかる
実際そうなんだからどうしようもない
667:デフォルトの名無しさん
08/10/19 17:20:55
エラーコード(RSTやタイムアウトなど)を調べるだけじゃダメなんだっけ?
668:デフォルトの名無しさん
08/10/19 18:16:00
こちらのTCP送信バッファが空になったら
相手のTCP受信バッファに届いたことは確か
相手プログラムが受け取れたか、
受け取れたとしてどのように処理したかはわからんけどね
669:デフォルトの名無しさん
08/10/19 21:26:27
いちいち送信バッファの内容チェックするのかよw
670:デフォルトの名無しさん
08/10/20 04:21:15
>>669
>>668
671:デフォルトの名無しさん
08/10/20 09:14:39
送信バッファが空になったかどうかなんて、確認する術あたっけ?
672:デフォルトの名無しさん
08/10/20 09:32:32
教えてください
Ajaxで 受けて側のサーバーをCで作っています
Ajaxがら GETでデーターを取りに来るときに
Keep-Alive指定なのに新たなコネクションを張ってきます
この場合サーバー側ではコネクションは持続したままで
よろしいのでしょうか?
ブラウザ側の挙動として7個程度のコネクションでリクエストした
後に止まってしまいます。タイマーで次々とリクエストされてくるのを
期待しているのですが・・・
サーバー側では リクエストにKeep-Aliveがあると持続して
無いと、そのセッションはCloseで良いのですよね?
673:デフォルトの名無しさん
08/10/20 12:22:53
>>671
getsocjopt
だが、バッファを監視するようなプログラミングは避けるべき
674:デフォルトの名無しさん
08/10/20 12:23:42
>>673
○getsockopt
675:デフォルトの名無しさん
08/10/20 18:10:07
>671
SO_SNDBUFを0にしてブロッキングsendが戻ってきたとき
=相手からACKが戻ってきたとき
だったっけか。MSのTCP実装限定かもしらん
676:643
08/10/20 22:57:14
こんなにレスをいただいていたとは
なんかすみません。
>>654
B側はデータ要求をしません。
A側からはいつデータが送られてくるかはわかりません。
B側ではA側からの接続を待ち続け、データが来たらA側に応答を返します。
A側とB側両方が同じように機能するため、受信したものが
不定期に送られてきたデータか、自分が送ったデータに対する応答かを
判別する必要があります。
B側では受信データに埋めたIDから送信データか応答かを判別して処理しますが、
A・B双方向からほぼ同時に送信をすると、どちらかで応答を認知できなくなったりします。
応答は相手へのデータ受信を確認する他、相手にデータを送ってから届くまでの
大体の時間を得るために用います。(応答受信時間も含むためあくまで目安です)
結局は設計・コードに問題がありそうなので、再度検討しなおします。
本当にありがとうございました。
677:デフォルトの名無しさん
08/10/20 23:13:13
>>676
>B側はデータ要求をしません
>A側とB側両方が同じように機能するため
どっちだよw
678:デフォルトの名無しさん
08/10/21 00:09:24
メッセージの送受信と処理を行うのを別スレッドにすれば、両者が同じ立場のアプリでも
大丈夫な気がするけど。
679:デフォルトの名無しさん
08/10/22 12:57:02
質問です。
ディスクリプタを複数bindして、そのディスクリプタを
1つのselectに入れても良いのでしょうか?
Linux or Windows XP SP2
680:デフォルトの名無しさん
08/10/22 22:11:51
というかまさにそのための select じゃないん?
681:デフォルトの名無しさん
08/10/22 22:31:12
selectが保持するのはfile discripterだけじゃろ,なにが問題になると感じての質問なのかな?
682:デフォルトの名無しさん
08/10/23 03:33:15
>>679
poll お勧め。
683:デフォルトの名無しさん
08/10/23 03:44:34
epollお勧め
684:デフォルトの名無しさん
08/10/23 03:53:18
C:\>maki poll
'maki' は、内部コマンドまたは(ry
685:デフォルトの名無しさん
08/10/23 11:39:02
kqueueもお勧め
686:デフォルトの名無しさん
08/10/23 22:24:52
さげ
687:デフォルトの名無しさん
08/11/02 02:12:39
WinSockでTCP通信プログラム作っているのですが
自分のプログラムが転送したデータの転送量を計測しようと思ってます。
Send関数の返り値にヘッダサイズを足せばいいと思い
ヘッダサイズを色々調べてみたのですが
イーサネットヘッダ 14byte
FCS 4byte
IP 20~60byte
TCP 20~60byte
→計 58~138byte
と、ばらついてしまうようです。
そこで質問なんですが、通信速度が表示されるP2Pソフト等は
適当な値で仮定して転送量を計測しているのでしょうか?
それとも何か便利な関数があるのでしょうか?
688:デフォルトの名無しさん
08/11/02 02:43:45
ヘッダなんか見る必要ないよ
何考えてんの
689:デフォルトの名無しさん
08/11/02 02:46:50
ヘッダの大きさも含めての転送量を知りたいんでしょ。
IPより低レイヤーだと環境によって変わると思うけどな。
690:デフォルトの名無しさん
08/11/02 03:52:04
ACKの回数なんて普通わからんべ
691:デフォルトの名無しさん
08/11/02 07:33:14
ヘッダまで考慮してカウントしないのでは
692:デフォルトの名無しさん
08/11/02 11:24:46
再送の回数なんて普通わからんべ
693:デフォルトの名無しさん
08/11/02 11:34:58
>>687
普通は実データのみに注目してヘッダなどのオーバーヘッドは無視だろう。
どうしてもヘッダを含めての転送量を知りたいなら、OSの統計機能を使うことになるかな。
694:デフォルトの名無しさん
08/11/02 13:22:14
UDP通信で質問します。
自分の作成したプログラムだと相手先がない場合、
sendtoの実行時に数秒間ブロックされてしまうのですが、
ping相当のコードは制御がすぐ戻ってきてブロックされないようです。
自分のコード
sd = socket(AF_INET, SOCK_DGRAM, 0);
sendto(sd, data data_size, 0, (struct sockaddr *)&to, sizeof(to));
ping相当のコード
sd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
setsockopt(sd, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
sendto(sd, data, data_size, 0, (struct sockaddr*)&to, sizeof(to));
socketに渡すオプションとsetsockoptでTTL値を
設定してる以外は変わらないと思うのですが、
どの設定がブロックに影響しているのでしょうか?
自分のプログラムでも制御をすぐ返すようにしたいのですが、
複雑になりそうなので非同期にはしたくありません。
環境はXP SP2と linuxです。
695:デフォルトの名無しさん
08/11/02 14:22:35
非同期じゃないプログラムって趣味のプログラム?
696:デフォルトの名無しさん
08/11/02 14:50:04
>>688-693
普通はヘッダは考慮しないのですね
再送のことも考慮しだすとちょっと大変そうなので
実データのみで計測することにしました。
ありがとうございました。
697:デフォルトの名無しさん
08/11/02 14:52:45
>>694
名前解決やarpに時間がかかってるのかもしれないし、そこだけでは判断しかねる。
制御を直ぐに戻したいなら非同期のプログラミングは避けられないね。落ち着いてやれば難しくない。
非ブロッキングや重複I/Oを調べましょう。
698:デフォルトの名無しさん
08/11/02 15:37:03
これと同じ問題か
URLリンク(soudan1.biglobe.ne.jp)
699:デフォルトの名無しさん
08/11/02 17:58:20
とりあえずpingが通じてる間だけ通信することで回避できました。
非ブロッキングにしたい所ですが、送信バッファが
関数ローカルな箇所がいくつもあるので修正がちと大変です。
700:デフォルトの名無しさん
08/11/02 18:45:21
それは直したほうが楽だぞ。
C++のメンバ変数に移動させると楽だよ
701:デフォルトの名無しさん
08/11/02 21:30:52
重複IOならともかく、非ブロッキングIOなら、
送信バッファが関数ローカルでもOKだと思うけど。
702:700
08/11/02 22:49:20
>>701
そうだった、socketの非ブロッキングは関数ローカルが正解だった。
重複I/Oはバッファーを保持しなくてはならない。いつも重複I/O使ってるからごっちゃになってた。すまん
703:デフォルトの名無しさん
08/11/03 19:16:06
あ、そうなんですか。
呼び終わったら破棄していいんですね。
704:デフォルトの名無しさん
08/11/16 12:34:07
VC++でwinsock2.hをインクルードすると大量の二重DEFINEエラーが出るんだけど仕様なの?
BCCじゃ起きなかったのに
705:デフォルトの名無しさん
08/11/16 12:46:14
エスパー待ちだな
706:デフォルトの名無しさん
08/11/16 14:22:38
>>704
windows.h のincludeの前に
#define WIN32_LEAN_AND_MEAN
後死ね。
707:デフォルトの名無しさん
08/11/18 06:30:58
最近UDPのが楽なのに気付いた。
WinsockのFAQ書いた奴はヘタレ。
708:デフォルトの名無しさん
08/11/18 07:35:13
まあ、伝送単位が1KBとかでセキュリティとか
ルータ超える考慮とかも特に必要ないとなると、
UDPが楽ではあるよね
TCPはエラー発生ポイントが多くなるし。
709:デフォルトの名無しさん
08/11/18 12:03:57
ネットワークプログラミングを始めようと思ってるんだが
入門書でお勧めなのはどれだい?
ネットワーク以外のプログラミングなら自信あるぜ!
710:デフォルトの名無しさん
08/11/18 12:15:29
スティーヴンス本
>>3 の最初の
711:709
08/11/18 12:52:56
バカヤロー、どう考えてもビギナー向けじゃないぞ?!
でもかなり評価が高いみたいだな。知識ついたら読んでみるよ
で、入門書の話なんだが・・・
712:デフォルトの名無しさん
08/11/18 13:22:53
プログラミングに自信がある奴にビギナー向けが必要なのか?
713:デフォルトの名無しさん
08/11/18 13:31:41
入門書を探してる時点でry
714:デフォルトの名無しさん
08/11/18 22:28:30
そういや、おいらは「インターネットを256倍使うための本」が
ネットワークプログラミング事始めだったZE
715:709
08/11/19 01:27:04
>>712
DirectX使えればネットワークプログラミングができる訳でもないだろう?
>>713
おまいはどうやってネットワークプログラミング覚えた?
やっぱりグーグル先生に教わったほうが良いのかかなぁ
>>714
Amazonでの評価は低いが、大丈夫なのか?
しかし、プログラミング業界はホント書籍に恵まれないな
ビギナー向けの本買い漁ろうかしら
716:デフォルトの名無しさん
08/11/19 05:31:06
Amazonでの評価なんかアテにするな
717:デフォルトの名無しさん
08/11/19 05:51:25
>>711
URLリンク(www.amazon.co.jp)
私はこれの改定前のもので門をくぐりました。昔はネットワークバイトオーダー無視を散々に叩かれましたが、今は大丈夫。
718:デフォルトの名無しさん
08/11/21 08:21:55
MTU内に収まらないようなデータを一度にsendすると
複数パケットにデータが分割されて送信され、受信側で順番にrecvすると思うのですが
2種類のどちらもMTU内に収まらないサイズのデータがあったとして
これらを連続してsendした場合に、
受信側でrecvした時に1種類目のケツと2種類目の頭がひっついて取れるなんてこと無いですよね?
719:デフォルトの名無しさん
08/11/21 08:28:36
ある。
720:718
08/11/21 10:17:44
あ、あるんですか・・・
やっぱり順序が保障されてるだけで、ひっついてとれることはあるんですね
とすると、切り分けるための仕様を決めとかないとだめか・・・
721:デフォルトの名無しさん
08/11/21 11:34:07
tcpか?
tcpはバイトストリームだから切れ目は自分で入れないとわかんないよ
722:デフォルトの名無しさん
08/11/21 11:38:35
あ、TCPです
やっぱそうなんですね
お二方ともありがとうございます。
723:デフォルトの名無しさん
08/11/21 17:53:15
初心者らしい良い質問である
724:デフォルトの名無しさん
08/11/21 23:13:23
自分で気がつくだけ偉い。
気がつかないで突っ走ってデバッグのときに変だ変だって騒ぐ奴よりは。
725:デフォルトの名無しさん
08/11/21 23:35:16
変だ変だと騒いだ俺は死んだほうがいいんですか?
ねこわかネットワークとかそこらへん一切書いてない本も多いし
しかたないだろうとしか言いようがない
ということにするのが大人の対応だと思います
726:デフォルトの名無しさん
08/11/22 00:11:47
どうやってデバッグするか?ということを考える機会にもなるし
新しい領域に入るときはある程度トライアンドエラーしたほうがいいと思う
727:デフォルトの名無しさん
08/11/22 01:19:42
改行が区切りのストリームは
1文字ずつ読まないとだめあるか?
728:デフォルトの名無しさん
08/11/22 01:26:14
バッファにたくさん読んで、改行以降は次回のためにそのまま保持しておけばよい
729:デフォルトの名無しさん
08/11/22 02:24:40
というかそういうレベルで、プログラマー名乗るのがあなたの罪
730:デフォルトの名無しさん
08/11/22 02:28:39
別に名乗ってないかもしれんじゃないか
まぁわからんが
731:709
08/11/22 05:20:17
すまん、亀レスってレベルじゃないが>>717thx
732:デフォルトの名無しさん
08/11/22 19:25:50
>>709
亀レスだが、自分はこの2冊で入門はなんとかなった。
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)
で、次にWebの情報サイトを横目に見つつ、rfcとか、TCP/IP FAQとか読んだ。
>>3-7 も半分ぐらい読んでる。
詳解TCP/IPシリーズとマスタリングTCP/IPは仕事で使うなら目を通すべき。
あと、パケットキャプチャソフトを自作するって本が数冊出てるので、
パケットキャプチャして遊んだ。デバッグの効率も上がるし。
733:デフォルトの名無しさん
08/11/22 23:43:12
recv()一回でひとつのメッセージを取得できる保証しろって騒いでた奴いたなー
734:デフォルトの名無しさん
08/11/23 05:22:02
>>728
バッファ持ちまわるの面倒だから結局そういう事やらないよね。
ラッパー作る暇ないし。
735:デフォルトの名無しさん
08/11/23 09:59:38
本気か?
736:デフォルトの名無しさん
08/11/23 11:26:10
>>734
余計に受信できてしまったらどうするの?
1byteごとにrecv?
改行区切りみたいな読んでみないと終わりが分からないデータじゃなければ、
データ長いれるとかやりようはあるけど。
737:デフォルトの名無しさん
08/11/23 11:43:22
>ラッパー作る暇ないし
どんだけ無能なんだよ
738:デフォルトの名無しさん
08/11/24 19:48:37
dup2等を使って、stdioにやらせる手法はあるけどね。ブロックしても構わない用途なら。
まあ一般的だとは言いがたいけど。
739:デフォルトの名無しさん
08/11/24 21:19:42
普通に受信して区切る処理はゼッタイ必要なんだから
ラッパにしたほうが楽でしょ
740:デフォルトの名無しさん
08/11/25 00:06:57
いや、そんないつ使うか判らんもの作る暇ないって。
一時期はおれも汎用性の夢をみたがな。所詮は無駄な贅肉だよ。
ソケット関係は毎回毎回要求仕様と微妙にかみ合わなくて
ラッパーなんか作るだけ無駄だと悟ったよ。
741:デフォルトの名無しさん
08/11/25 00:09:42
使い捨ての軽量ラッパ作ればいいんじゃね
742:デフォルトの名無しさん
08/11/25 00:20:01
wrapperと汎用ライブラリがごっちゃになってない?
743:デフォルトの名無しさん
08/11/25 00:25:15
>>740がどんな実装してるのか気になる
本当に1バイトずつrecvしてるのかな
744:デフォルトの名無しさん
08/11/25 20:09:58
大学のUNIXOSでネットワーク対戦できるC言語のプログラムを作りたいです。
何かオススメの本とかサイトはありませんか?
745:デフォルトの名無しさん
08/11/25 20:19:24
Javaネットワークプログラミング(オライリー)っておすすめかお(´・ω・`)
読んだ事ある人いたら教えて欲しいお。
746:デフォルトの名無しさん
08/11/25 20:42:43
大学のUnixマシンでネットワーク対戦リバーシつくったが、
ネットワークよりXlibに苦労した。。。
747:デフォルトの名無しさん
08/11/25 21:03:38
>>744
UNIX系は情報が入手困難で収集にも時間が掛かりすぎます。
結局>>745のようにJavaとかになったりします。
最初からWindowsで考えるのがおすすめですよ。
大体1/10から1/100程度の開発時間が短縮できます。
748:デフォルトの名無しさん
08/11/25 21:57:27
うざいな。
そんなことあたりまえでしょう?
749:デフォルトの名無しさん
08/11/26 03:22:58
だから、素直にJavaにしとけって。Winだろうが、Unixだろうがプラットフォームごとに
勉強する必要ないぞよ。1つ覚えれば、Write once, Run anywhereだ!
おまけに言語使用もそんなに難しくない。ネットワークなんかJavaでも一番わかりやすいんだから!
750:デフォルトの名無しさん
08/11/26 03:24:41
>>745
その本はいいけど、古いよ。昔のJavaのメソッドとか書かれてるし、
今推奨じゃないのがけっこうあるよ。
でも、もんのすごく低レベルな初心者でもわかりやすく描いてあるから
一応モススメ。
751:デフォルトの名無しさん
08/11/26 03:52:03
>>749
え?winsock って bsdソケットとお作法が違うのですか?イベントドリブンに書くことは理解していますけれども。
752:デフォルトの名無しさん
08/11/26 13:21:49
×Write once, Run anywhere
○Write once, Debug anywhere
753:デフォルトの名無しさん
08/11/26 21:34:32
>>751
必要なライブラリも違うし、Closeするときも関数名が違うし
WSAStartup、WSACleanupなんてWinsockだけだし…
そういう違いで悩みたくないならJavaのほうが良いねと言うお話
754:デフォルトの名無しさん
08/11/26 22:15:40
URLリンク(xy.yu.to) (ここは本来のサイトではないが)
この荒れまくりカオス絵チャのminiっていう部屋の
秘密スペース(枠外)への書き込みってどうやれば
できるようになるのか解析して教えろ。
あと、1人の防衛プログラマーのクリアツールが強すぎて、
荒しプログラマーがことごとく全員返り討ちになってるから
オマエラが面白くしてみろ。
ゲハハハごめんね
755:デフォルトの名無しさん
08/11/26 23:50:26
>>753
そんなの大した違いじゃないじゃん。
Winsockはbsdのソケットを踏襲している。
それに加えてマイクロソフトの大好きなウインドウズメッセージを使った別物のセットも含まれている
ってだけのことじゃんか。
違いといえばclosesocketかcloseか、あとはアプリ起動時に一回呼ぶだけのWSAStartupと終了時に同じくWSACleanup。
こんな違いならパラダイムやアルゴリズムに差は出ない。
756:デフォルトの名無しさん
08/11/26 23:50:33
>>753
なるほど、しらべてみます。
757:デフォルトの名無しさん
08/11/27 00:06:46
>>755
winsockでは
poll()もkqueue()もepoll()もreadv()もwritev()もalarm()も使えない
read()/write()も(そのままでは)使えない
select()はあるが、紛い物のオモチャなので本当にオモチャにしか使えない
winsockで推奨されるのはI/O completion portとoverlapped I/Oの組み合わせ
WSARecv()やWSASend()を使えということだ
別物だと思ったほうがすっきりする
758:デフォルトの名無しさん
08/11/27 01:25:26
ソケットの数が50を超えたりしなきゃ、
poll,kqueue,epoll,/dev/poll,overlapped ioな連中の
出番はないだろ。
759:デフォルトの名無しさん
08/11/27 02:20:47
>>758
select()なんかでいい程度のプログラムなら、それこそJavaでいいじゃん
760:デフォルトの名無しさん
08/11/27 04:00:31
Javaはバージョンごとにころころ変わるからヤダ!
761:デフォルトの名無しさん
08/11/27 11:02:37
>>759
その一点のみでC/C++ではなくJavaにする莫迦なんて
あなただけです。
762:デフォルトの名無しさん
08/11/27 12:19:19
>>761
つまり移植性重視で、パフォーマンスは求めてないんでしょ?
そういうケースならJavaで、というかJavaがいいんじゃないの?
クライアントなら別だが、そういうケースでサーバを書くのなら
C/C++なんかを選ぶ理由が俺には分からない
実際にはスレッド、シグナルハンドリング、排他制御の方法、
等々移植性の無いことだらけで、ソケットAPIだけ限定したところで
何の意味も無いと思うけど
一体どんなプログラムを仮定しているの?
763:デフォルトの名無しさん
08/11/27 12:33:16
馬鹿か?
パフォーマンスの時点で最後までJavaなんてありえねえよ。
移植したけりゃ#ifdefで切り分けろ。
常識だろうが。
764:デフォルトの名無しさん
08/11/27 12:41:26
>>763
主張が揺れまくってて意味わかんないな
パフォーマンスの時点でサーバーサイドJavaがあり得ないと言い切るぐらいなら
winsockでselect()/recv()/send()を選択するのはそれこそおかしいでしょ
現在のJava server VMの性能がどの程度か知って言ってるの?
俺は、C/C++を使うなといっているのではなく、
winsockでのネットワークプログラミングも大体同じだという
主張に反論してるだけなんだけど
IOCPとoverlapped I/Oならプロアクターモデルになるし、全然違うでしょ?
765:デフォルトの名無しさん
08/11/27 13:50:52
んで、結局、Cで組めばいいのかJavaで組めばいいのかどっちなんだよ!
はっきりしてくれ!
766:デフォルトの名無しさん
08/11/27 14:00:36
Erlangに決まってるだろ。いまどき排他制御なんてダサダサなことするかよ
767:デフォルトの名無しさん
08/11/27 15:43:21
ここでいいのか分かりませんが、Unix系のマニュアルで、よく、
・コマンド名(2)
・関数名(3)
のように、(数)のような記述がありますが、これはどういう意味で
しょう?
768:デフォルトの名無しさん
08/11/27 15:50:35
>>767
常識で考えれば、年齢だな
お姉ちゃん(17)
とか
769:デフォルトの名無しさん
08/11/27 15:53:53
セクション
man 使ってないとあまり・・・
770:761
08/11/27 15:58:26
>>764
>主張が揺れまくってて
「自分に反論してくるのは世界に一人だけ」ってタイプ?
>>765
どういう環境でもネットワーク絡みのプログラミングは出来るから
ネットワーク以外の要素で決めれ。
>>767
>ここでいいのか分かりませんが
違うけど、態々別スレで訊き直すほどのもんじゃないから答えちゃうと
man ページの章番号。
1がコマンド、2がシステムコール、3がライブラリ、4がデバイスとか
決まってる。
771:デフォルトの名無しさん
08/11/27 16:53:09
>>767
write ってコマンドあるよね。man write ってやると、システムコールの write(2)じゃなくて
ユーザコマンドの write(1) がでてきてしまう。
システムコール調べたかったら man 2 write とか man -s 2 write とかやる
772:デフォルトの名無しさん
08/11/27 19:39:05
まぁいいじゃんか。JavaでもC++でも
私のためにケンカはやめて
773:デフォルトの名無しさん
08/12/02 23:08:28
おまえらネットワークプログラミングしろよ!
774:デフォルトの名無しさん
08/12/02 23:28:06
一方、774はお姉ちゃん(17) でネットワークプログラミングを楽しんだ
775:デフォルトの名無しさん
08/12/02 23:33:00
しばらく来ないうちにまたJAVAかCかでもめてたのかよ
答えは出てるだろ
C++
これ以外ない!!!!!
JAVAのできることすべてC++でできる
C++でできてもJAVAにできないことはある
ヴァーチャルマシンにしてもそうだ
JAVAはプラットフォームを問わないってうたい文句があるけど
そのJAVAとPCを介している部分の大多数はCもしくはC++で書かれている
中学生の優等生と東大、京大生を比べているようなもの
当然大学生はCとC++
わかったかアホどもw
776:デフォルトの名無しさん
08/12/02 23:42:26
Javaネットワークプログラミング買って来た(・ω・)
ネットワークの知識は多少ある程度だけど、この本はかなり簡単な文章で深く掘り下げて書いてあるNE!!
ネットワークのプログラムとは別に知識もつきそうだよ(・ω・)
777:デフォルトの名無しさん
08/12/03 00:08:21
>>775はたぶんSmalltalkをSmallTalkと書いたりするんだろうな
まあ、頑張れ
778:デフォルトの名無しさん
08/12/03 02:46:36
一方東大生はRubyを使った
779:デフォルトの名無しさん
08/12/03 04:47:28
マジレスすると案があったら作らせるだけ
東大にIT土木はいない
780:デフォルトの名無しさん
08/12/03 22:35:49
東大生が既成の言語なんか使うわけないだろ
781:デフォルトの名無しさん
08/12/04 07:23:59
URLリンク(www.google.co.jp)
782:デフォルトの名無しさん
08/12/04 11:11:17
中学生の優等生 Java / VB / PHP
東大 Ruby
京大 Python
社会人 C/C++
783:デフォルトの名無しさん
08/12/04 12:46:34
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__) 社会人っていったら、自作言語だろ・・ それが一番使いやすいだろ・・
| ` ⌒´ノ
. | }
. ヽ }
ヽ ノ \
/ く \ \
| \ \ \
| |ヽ、二⌒)、 \
784:デフォルトの名無しさん
08/12/04 21:12:49
微妙にスレ違いかもしれませんが、
global IP を持っていて逆引きもできる host が /etc/hosts に FQDN なしで登録されていると、
gethostbyaddr や getaddrinfo で調べたときに、
/etc/hosts が優先されて FQDN が不明なことがあります。
こういう場合に DNS に直に引きにいけば良いと思うのですが、
そのあたりを簡単にやるほうほうはありますが?
785:デフォルトの名無しさん
08/12/04 21:20:01
echo > /etc/hosts
786:デフォルトの名無しさん
08/12/04 22:16:51
: > 785
permission denied: 785
787:デフォルトの名無しさん
08/12/05 01:14:35
>>784
/etc/nsswitch.conf の
hosts: files dns
を
hosts: dns files
にしてみたり
/etc/host.conf の
order hosts,bind
を
order bind,hosts
にしてみたりとか
でも逆にしない方が幸せかも
788:デフォルトの名無しさん
08/12/05 02:37:52
>>787
設定を変えれば DNS 優先になりそうですが、
システムの設定を変えられないユーザーもいるので、プログラム側で対処したいなと。
789:デフォルトの名無しさん
08/12/05 09:19:28
OSに頼れないなら自分でDNSクライアント部分を書くしかない希ガス
790:デフォルトの名無しさん
08/12/05 10:13:52
逆にOSの設定で動作変えたいときにこんな強引なことされてると腹立つよな
791:デフォルトの名無しさん
08/12/05 10:48:33
>>788
となると res_query(3) とか自分でDNSのリゾルバ呼ぶことになるかな
792:デフォルトの名無しさん
08/12/05 19:14:59
なにか手抜きな方法がないかと思ったのですが、やはりそれですかねえ。
ちと頑張ってごりごりやってみます。
793:デフォルトの名無しさん
08/12/09 00:57:23
RTPプロトコルを勉強のために
実装してみたいのですがサンプルになりそうなものって
ありますか?
794:デフォルトの名無しさん
08/12/09 01:03:29
勉強のためならサンプルなんか見ずにやれやw
795:デフォルトの名無しさん
08/12/09 15:53:37
この辺から適当に探してみれば?
URLリンク(www.voip-info.org)
796:デフォルトの名無しさん
08/12/09 22:34:08
UDPのパケットのシーケンス制御って
どうしたいいのでしょうか
797:デフォルトの名無しさん
08/12/09 22:53:44
自分でシーケンス番号振って並べ替えりゃ良いだろ
そんくらいも思いつかないようじゃやめとけ
798:デフォルトの名無しさん
08/12/09 23:16:56
>>797
まぁそうなんだけどさ
効率よく並べ替える方法が思いつかん
ちょっと知恵くださいよ年末だし優しくしてくださいよ
799:デフォルトの名無しさん
08/12/09 23:21:11
うぜえよ低脳
800:デフォルトの名無しさん
08/12/10 05:25:07
配列インデックスにすりゃO(1)でそ
並べ替える、って意味わからん
801:デフォルトの名無しさん
08/12/10 05:36:11
>>798
教えてやったんだから俺にお年玉くれ
802:デフォルトの名無しさん
08/12/10 10:16:59
>>798
FIFO でも実装したらどうだ。
それか、漢らしく「シーケンスが狂ったパケットは捨てる」とか。
803:デフォルトの名無しさん
08/12/10 14:15:50
「XX番まで到着したよ」と通知して送りなおしてもらうんですね
わかります
804:デフォルトの名無しさん
08/12/10 14:18:55
TCPでおk
805:デフォルトの名無しさん
08/12/10 14:36:23
いまどきFTPを実装するの面倒だし、HTTPでいいかなって・・・
HTTP/UDPのライブラリとかない?(できればjava)
806:デフォルトの名無しさん
08/12/10 14:40:32
普通にTCPじゃいかんの?
807:デフォルトの名無しさん
08/12/10 14:51:57
ヘンタイですねわかります
808:デフォルトの名無しさん
08/12/10 15:05:31
TCPでいいんだけど、LANとか閉鎖ネットで使ったりとかでTCPの信頼性に依存する必要はないときとか。
動画ファイルとか巨大データ・ファイル・サーバからの転送とか個人で使用とか想定してみて。
HTTPとTCPとIPはレイヤーが違うから差し替えるだけ(プラガブルみたいなの)で出来そうじゃないか?
動画ストリーム用みたいな独自プロトコルを策定するのも分かるけど、そういう閉鎖ネットではプロトコルの機能に関心はなくてデータの入出力とストリームの確保だけできればいいから、結局HTTPでいいよ。
809:デフォルトの名無しさん
08/12/10 15:26:20
HENTAIにはTSUNAMI
URLリンク(tsunami-udp.sourceforge.net)
810:デフォルトの名無しさん
08/12/10 16:06:46
FTPじゃんか。TFTPで暗号機能がプラガブルとかだとみんなハッピーなんだけど、
HTTPやFTPがある層の一つ上にセキュリティ層(アプリ層)を作って、FTP/UDP/SSLとかにすればいいかなって感じはする。
HTTPSとかはHTTP専用に実装してるけど、やっぱ今の仕様策定モデルはMVCとプラガブルでしょ。
811:デフォルトの名無しさん
08/12/10 16:32:19
タグ:MVC,プラガブル
812:デフォルトの名無しさん
08/12/10 23:32:43
HTTP にしといて UDP にしたい理由がわからん
813:デフォルトの名無しさん
08/12/10 23:40:41
HTTP仕様(RFC)は、アプリ(サーバ)として広く普及してるから結構いいかも
814:デフォルトの名無しさん
08/12/11 01:56:29
ルーター通らないんじゃなくてよ
815:デフォルトの名無しさん
08/12/11 03:23:08
HP見るとかなんでもない用途なら、自作するまでもなく普通にHTTP(のサーバ)使うだろ。
といって今はtsunamiみたいに広範囲向けのudpに興味あるわけでもないし。
やっぱudpは、p to p でかつ永遠に連続転送(強制流し込みw)かな。
HTTPは仕様上セッションが保障されてるから一度で転送して終わり。
816:デフォルトの名無しさん
08/12/11 03:34:54
UDPはいちいちconnectしなくていいという利点がある。
ルータ超えしたければ間でTCPに変換すればいいし。
817:デフォルトの名無しさん
08/12/11 16:58:39
C言語で同じインターネット内で他のユーザーと通信するプログラムは作れないですか?
writeコマンドみたいな。
818:デフォルトの名無しさん
08/12/11 17:00:17
>>817
writeでいいじゃん
819:デフォルトの名無しさん
08/12/11 17:00:52
すまん net sendと間違えた
820:デフォルトの名無しさん
08/12/11 17:03:27
>>818
writeだといらない文字まで表示されるので嫌です。
もっと好きな文字を送る方法はないですか?
821:デフォルトの名無しさん
08/12/11 17:05:12
arp
822:デフォルトの名無しさん
08/12/11 17:17:32
>>821
arpをというのを使えばできますか?
参考HPを教えてください
823:デフォルトの名無しさん
08/12/11 18:19:07
tcpにおける送受信で、
1. recv(or read) で一文字ずつ受信する方法
と、
2. recvでMSG_WAITALL を指定する方法
では、どちらがいいのでしょうか?
補足ですが、今作っているシステムでは、
パケットの先頭3バイトに後続データの長さを格納しています。
よって、1の方法でやる場合は、
まず3バイト受信できるまで、1バイトずつ読み込み、
その後、後続データ長分を受信できるまで1バイトずつ読み込むのようにやるつもりです。
(もっといい方法ありますか?)
824:デフォルトの名無しさん
08/12/11 18:20:56
net sendと同じ条件ならメールスロットに書けば
825:デフォルトの名無しさん
08/12/11 18:28:03
>>823
URLリンク(www.linux.or.jp)
>MSG_WAITALL (Linux 2.2 以降)
>このフラグは、要求した量いっぱいのデータが到着するまで、操作を停止 (block) するよう要求する。
>但し、シグナルを受信したり、(中略)した場合には、要求した量よりデータが少なくても返ることがある。
ので、MSG_WAITALLを指定したからといって安心してはいけないかと。
3. recvで必要なバイト数を指定して受信し、実際に受信したバイト数を見て
足りなければ再び recv で不足分のバイト数を指定して受信する方法
が俺のおすすめ
826:デフォルトの名無しさん
08/12/16 20:47:45
ネットワーク対戦でオセロ,ババ抜きなどできるC言語のプログラムを作りたいです。
オライリー以外で何かオススメの本とかサイトはありませんか?
827:デフォルトの名無しさん
08/12/16 21:14:43
ねこでもわかるネットワークでいいんじゃね?
わかりやすいよ
ただしTCPで送信データが分割されて受信される対策について
一切説明してないのが残念な一品です
分かってる人は問題ないんだけどね
俺は一回SENDすると1回のRCVで
全部受信できると勘違いしてたからチンダ
今となってはいい思い出です
828:デフォルトの名無しさん
08/12/16 21:34:40
せめてrecvって書こう
829:デフォルトの名無しさん
08/12/16 23:47:28
ねこはソケットについてあんまり書いてなかったからなあ
830:デフォルトの名無しさん
08/12/17 00:16:47
LAN経由で通信を確立させて、ピンポン方式でデーターを送って応答を返してもらおうと思うのですが、応答が許容待ち時間(10秒)に達したら、データ再送or通信切断どちらのほうが適切なのでしょうか。
831:デフォルトの名無しさん
08/12/17 00:22:58
TCP?UDP?
832:830
08/12/17 00:36:29
>>831
TCPです。
本来ならほんの一瞬でデータが応答がかえるはずなので、
どちらのほうがよいのかなと思いました。
833:デフォルトの名無しさん
08/12/17 00:41:13
おちつけ
834:デフォルトの名無しさん
08/12/17 02:39:08
真の許容待ち時間は何秒なんだ?
835:デフォルトの名無しさん
08/12/17 07:00:27
TCPでデータが届いてなければ再送じゃなくてつなぐ所からやりなおしじゃね?
836:デフォルトの名無しさん
08/12/17 09:21:50
再送はUDPしかありえないっすよ
837:デフォルトの名無しさん
08/12/17 12:04:38
inetdは、標準出力関数を呼び出す毎に、パケットを送ってくれるんでしょうか?
それとも、パケットに詰め込めるだけ詰め込んでから、送るんでしょうか?
838:830
08/12/17 22:05:07
>>834
ありがとうございます。
ピンポン方式なので、
そのデータがかえってこないと次が送信できないので、
10秒ぐらいかなと思い勝手に決めました。
真の許容待ち時間があるわけではありません。
>>835 836
ありがとうございました。
切断がよさそうですね。
839:デフォルトの名無しさん
08/12/18 00:20:19
URLリンク(www13.plala.or.jp)
ここのネットワークゲームのプログラムをもっと丁寧に説明してあるような
本知りませんか?
840:デフォルトの名無しさん
08/12/19 19:29:41
sendでゲーム画面をサーバからクライアントに送信するには
引数をどう指定したらいいんだ
841:デフォルトの名無しさん
08/12/19 20:16:08
送信するデータを指定
842:デフォルトの名無しさん
08/12/19 20:37:46
たいていの場合画面は送らない
843:デフォルトの名無しさん
08/12/19 20:54:39
勘違いかもしれんが,サーバはsendで更新情報をメッセージで送って
受け取ったクライアントはその情報を元に画面を更新する
画面自体は送らないでOK?
844:デフォルトの名無しさん
08/12/19 22:32:39
勘違いじゃなくてスレ違い
845:デフォルトの名無しさん
08/12/20 01:24:56
DNSサーバ扱ってるWebサイトで
UDPパケットが分断されずに遅れる最大サイズが512Byteと書いてあるんですが、
これはUDPを使っている他のプログラムにも適用されることですか?
846:デフォルトの名無しさん
08/12/20 01:43:53
DNSのzoneファイルのサイズを512B以下にしろって話か
847:デフォルトの名無しさん
08/12/20 01:53:16
1つのUDPパケットで運ぶことのできるデータ(「ペイロード(荷物)」という)の長さは、
下位層のIPパケットの長さの制約を受ける。(標準の)IPパケットでは、1回の送信で、
最大では65515bytes(65535bytesから、IPヘッダの最低サイズ20bytesを引いたもの)
までのデータを送信することができる(IPヘッダ・オプションが付くと、さらに小さくなる)。
そのため、1つのUDPパケットで送信することのできる最大ペイロード・サイズは、
65515bytesからUDPヘッダのサイズ(8bytes)を減算した、65507bytesまでとなる。
このため、この「長さ」フィールドの値は、8(データが空の場合)~65515となる。
なお、下位層でIPフラグメンテーションが行われてIPパケットが分割されて送信されても、
UDPで1度に送信することのできるサイズは影響を受けない。
IPパケットのフラグメンテーション(分割)や再構成(元に戻すこと)は、
IP層のレベルで行われるからである。ただしIPフラグメンテーションが禁止されていると
(IPヘッダ中のDF bitがセットされていたり、ルータがフラグメント・パケットのルーティングを
禁止していたりする場合)、より小さなサイズのUDPパケットしか送信できなくなる。
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
848:デフォルトの名無しさん
08/12/20 01:59:24
URLリンク(jprs.jp)
▼DNS サーバの最大数
DNS には、そのプロトコルの仕組み上、応答メッセージが 512byte 以内に収
まる必要があり(*1)、上位の DNS サーバに登録できる NS レコードの数には
制限があります。
(*1) TCP への fallback もありますが、ルートサーバなどの上位の DNS サー
バに TCP の接続が集中すると負荷などが問題となり、UDP で問い合わせ
を行う必要があります。
849:デフォルトの名無しさん
08/12/20 02:21:20
Windows
UDP パケットサイズの最大値の既定値は 1280 バイトです。
UDP パケットのサイズを 512 バイトより大きくする場合、
UDP パケットは UDP ホスト以外のデバイス (ルーターなど)
を経由して送信される必要があり、それらのデバイスの中には
512 バイトを超える UDP パケットをサポートしていないものが
ある点を考慮します。すべてのデバイスおよび可能であれば
そのパスの MTU に対応するように UDP パケットの最大値を設定し、
その最大値に基づいて UDP ホストを構成することをお勧めします。
850:デフォルトの名無しさん
08/12/20 05:37:51
>>843
そう、それであってる。スレ違いでもないし。
たとえばネトゲなんかだと、自キャラの座標を鯖が持っていて、そのキャラからの
一定座標内のキャラクタの情報(座標だったりキャラクタの種類だったり見た目に関する情報だったり)を
クライアントに返却し、クライアントはそれをもとに絵を出すという感じ。
テキストデータと画像データではデータ量に相当の差ができるし、絵を送る場合は鯖の負荷も恐ろしいことになる。
851:デフォルトの名無しさん
08/12/20 05:44:27
いやスレ違いだろ
852:デフォルトの名無しさん
08/12/20 06:22:32
クラサバシステムでどういうデータをクライアントに送るべきかって相談とも取れるからここでもいいんじゃないの
853:デフォルトの名無しさん
08/12/20 09:29:01
板違いじゃボケ
>プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
>ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
>Javascript は Web 制作板、CGI は Web プログラミング板へ。
>業界談義、愚痴はプログラマ板へどうぞ。
>ゲーム関係の話題はゲーム製作板へどうぞ。
>ネタ、板とは関係の無い話題はご遠慮ください。
854:デフォルトの名無しさん
08/12/20 10:50:01
yahohho- yahhohho-
no-bura yahho-
855:デフォルトの名無しさん
08/12/22 09:32:05
>>852
>クラサバシステムでどういうデータをクライアントに送るべきかって相談
「誰か設計からやって下さい」と同義だぞ、それは。
856:デフォルトの名無しさん
08/12/23 10:42:32
リアルタイム性を求められるネットワークプログラミングでは
TCPを使うべきかUDPを使うべきかどっちが良いのでしょうか
857:デフォルトの名無しさん
08/12/23 10:49:00
どういうリアルタイムだ?
1日以内に届けばよいというリアルタイムもあるぞ(コンビニ売り上げ集計とかな)
どの程度(頻度・量)の通信があるのか?
端末・経路のハードウェアはどの程度の性能か?
とかいう要素で決まってくるものだとおもいなされ
858:デフォルトの名無しさん
08/12/23 10:54:21
>>857
1秒間に300000パケットを転送する程度です。
859:デフォルトの名無しさん
08/12/23 11:01:12
1回の交換に必要なのが 300000パケット で
1秒周期に交換作業を行う ってことかな?
860:デフォルトの名無しさん
08/12/23 11:11:23
通信する距離の問題ももちろんあるけど
1/10秒以内の間隔でデータやりとりするならUDP、それ以上の間隔なら両方作って都合いい方使えって感じ
861:デフォルトの名無しさん
08/12/23 11:14:46
それにしても速度が要求される通信だとテストする環境とかネックだな
LANだとTCPでも速度出るし
862:デフォルトの名無しさん
08/12/23 14:39:24
遅延装置を使え
863:デフォルトの名無しさん
08/12/23 15:52:07
遅延装置って何ですか?
864:デフォルトの名無しさん
08/12/23 16:28:26
奥歯にしこんであるスイッチを噛むんだ
865:デフォルトの名無しさん
08/12/23 16:40:23
それ自爆装置やw
866:デフォルトの名無しさん
08/12/23 16:41:18
あ、かそくそーち!のほうか
867:デフォルトの名無しさん
08/12/23 17:02:20
ワロタ
868:デフォルトの名無しさん
08/12/23 18:24:19
悲しいアホ達でした
869:デフォルトの名無しさん
08/12/23 21:34:05
なんかランドセルみたいな宇宙人?を背負うと
周りの連中が遅くなるって漫画あったんだけど、
なんだっけ?周りの連中からは速くて見えない。
870:デフォルトの名無しさん
08/12/23 23:53:37
子泣きじじいを背負えば遅くなるってのは聞いたことがある。
871:デフォルトの名無しさん
08/12/24 01:22:05
童話のうさぎとかめにでてくるかめは宇宙船だったらしいね
時間が止まってる間に竜宮城で酒池肉林
玉手箱開けて老人になったけどあれは時間が元に戻っただけ
872:デフォルトの名無しさん
08/12/24 01:40:47
なんだその餌は
出直せ
ぱくっ
873:デフォルトの名無しさん
08/12/24 11:35:58
宇宙船で時間旅行したっていう話じゃなかったか
874:デフォルトの名無しさん
08/12/24 22:49:10
なんでウサギとカメの話に竜宮城が出てくるんだ?
875:デフォルトの名無しさん
08/12/24 23:06:16
てきとーなIPとポートにsendして、相手が受信しなかった場合
そのデータはどこに行きますか?
876:デフォルトの名無しさん
08/12/24 23:32:26
消えます。
さらにICMPメッセージが帰ってくることがあります。
877:デフォルトの名無しさん
08/12/25 00:02:31
誰が消して誰がICMPを送ってるんですか?
878:デフォルトの名無しさん
08/12/25 00:24:46
1. ルータやホスト。(TCP/IPの前提)
2. その人。
879:デフォルトの名無しさん
08/12/25 00:32:52
消えるってことは残って誰かの迷惑になるというわけでもないってことでしょうか?
880:デフォルトの名無しさん
08/12/25 00:40:26
相手が受信しなかったときって具体的に何だ?
recv/readしなかったときか? それはTCPが受信してバッファにとりあえず入れとく。
881:デフォルトの名無しさん
08/12/25 00:47:41
>>878
ええ?OSやIPのライブラリ(ソフト)じゃないですか?
882:デフォルトの名無しさん
08/12/25 01:19:33
TCPの場合だとコネクトした状態でsendを行ってrecvを行う前に切断してしまったケースとか
UDPならrecvしなかった場合とかです
883:デフォルトの名無しさん
08/12/25 02:38:32
1のような仕組みはあえて仕込まない限り知らないが、
2はアタック検知したユーザが誰だよてめえと思ってみるということかなぁと。
でも俺ならdigする。んで、80番にアクセスすることはあるけどnmapは滅多にしない
884:デフォルトの名無しさん
08/12/25 03:14:10
sendした以上、相手には届いている。
885:デフォルトの名無しさん
08/12/25 05:07:30
sendしただけでは自分のTCPスタックの中にとどまっているかもしれなくね?
886:デフォルトの名無しさん
08/12/25 20:15:46
バウンスしたら迷惑だろ
887:デフォルトの名無しさん
08/12/25 20:40:46
>>877
NET UNREACH 郵便局(ルータ)の中の人「なんだよこんな番地(ルーティング)存在しねーよ。宛先が存在しません、と…」
HOST UNREACH 郵便配達(エンドルータ)の中の人「このマンションにこんな部屋番号(mac address)存在しねーよ。宛先に届けられません、と…」
PORT UNREACH 家の人(ホスト)「『ひろゆき様へ』って…誰だよそんな奴(port)この家にいねーよ、と…」
PROTOCOL UNREACH ニホンゴワカリマセーン
他にもいろいろあるけどこんな感じ。
888:デフォルトの名無しさん
08/12/25 20:47:11
ローカルIP宛てのパケットを外に出しちゃったら
消えずに迷子になるから迷惑って聞いたんですけど
結局どこに行きますか?
889:デフォルトの名無しさん
08/12/25 20:50:47
冥王星あたり
890:デフォルトの名無しさん
08/12/25 21:17:06
プライベートアドレスでなくても
あて先が突然切断したりしてルートを見失った場合、
パケットは
TTLがなくなるまでたらいまわしにされる?
それとも最も近くにあったルータまで行ってそこで見なかったことにされる?
891:デフォルトの名無しさん
08/12/25 21:25:49
ルータやホストはいつでもパケットを捨てていい。
最大努力配送が期待されているだけ。
これがTCP/IPの基本的な原則。
892:デフォルトの名無しさん
08/12/25 21:52:27
IPパケットが(何かの力によって)勝手に消えて、ネットワークのせいでいつまで経っても自ネット・目的先へ届かないってことはあるけど、
そういう時はTCPは再送信が送信元にいくからいいけど、UDPはICMPで再送の通知がされるの?もしかしてもみ消し?
893:デフォルトの名無しさん
08/12/25 21:55:07
UDPだと、UDPパケットが消滅したとき、ルータが必ずICMPとか何か使って再送してねの再送要求を送信先に必ず送るんでしょうか?
それとも、このパケットがちゃんと届いたかどうかもアプリの方が管理するんですか?
894:デフォルトの名無しさん
08/12/25 21:57:32
UDPは何も言わずに捨ててよい
895:デフォルトの名無しさん
08/12/25 21:58:34
UDPはアプリの方で管理
896:デフォルトの名無しさん
08/12/25 22:04:02
パケットの消失は、基本的にはルータやエンドで処理しきれず捨てられるか、寿命が尽きるかのどちらか。
sendしたパケットが相手に届いてちゃんと受けとればけば、recv使用がしなかろうが、TCPのバッファには残る。
897:デフォルトの名無しさん
08/12/25 22:13:26
最近はファイヤーウォールももみ消すよ。
>>893
ICMPもなくなる可能性があります。
基本的に、パケットがなくしてしまってもいいから、
どんどんネットワークをつないでいくってのがInternetの設計方針。
送信保証はエンドツーエンドでやる。つまりサーバとクライアントの仕事。
なくしていいよってことを認めないと、
PC買ってきて家ですぐにつなげなくなる。
電話みたいにISPのルータでの設定が必要になってしまう。
そういうネットワークはみんな滅亡した。
自分でやるのが面倒なプログラマはTCPを使うべき。
まともな再送機構作るのはかなり難しい。
898:デフォルトの名無しさん
08/12/25 22:26:37
UDPは消える
ヤバイくらい消える
ローカルなネットで2台しか繋がっていないテスト環境でも消える
っつーか取りこぼす
899:デフォルトの名無しさん
08/12/25 22:29:10
そりゃ送りすぎなんじゃないの?
900:デフォルトの名無しさん
08/12/25 22:30:39
でも最近では、バルクデータもUDPで送るようなソフトが出てきてるよな。
SINET等の高速回線ではそのほうがいいらしい。
901:デフォルトの名無しさん
08/12/25 22:33:22
>>900
> SINET等の高速回線ではそのほうがいいらしい。
TCP実装するくらいの実力があればね。
902:デフォルトの名無しさん
08/12/25 22:46:56
URLリンク(d.hatena.ne.jp)
903:デフォルトの名無しさん
08/12/25 23:16:05
みんなクリスマスの夜だというのに饒舌だなぁ。
もういいから彼女の元に戻ってやれよ
904:デフォルトの名無しさん
08/12/25 23:53:05
>>901
imihumei
905:デフォルトの名無しさん
08/12/25 23:55:33
状況によりけりだろうな。
SINETでもノードによっては遅延がでかいし。
906:デフォルトの名無しさん
08/12/26 03:47:52
UDPの方が意図通りに組める
907:デフォルトの名無しさん
08/12/26 05:00:00
新規にブラウザのレンダリングエンジンを作りたいんですけど、
とりあえず何が難しいのか分からない
908:デフォルトの名無しさん
08/12/26 05:15:35
ですよねー
909:デフォルトの名無しさん
08/12/26 06:24:24
彼女いないし
910:デフォルトの名無しさん
08/12/26 09:25:06
>>907
頼もしいな。
911:デフォルトの名無しさん
08/12/26 16:01:10
>>898
それは単に送りすぎなだけだよw
通信対戦ゲーム作る時、いろいろな環境で実験したが
時々ごっそり消える(しばらく通じなくなる)が、普段は快適。って結果だったな。
最初ネットで拾ってきたテストコードでやったらごっそり消えまくって、UDPひでえって思ったけど、
単にそのテストコードがデータ送りすぎなだけだった。
912:デフォルトの名無しさん
08/12/26 16:29:43
データ送りすぎもいいけど、それはOSやルータ側が処理しきれないで破棄するっていう問題なのか、それともUDPの仕様(の限界)なのかってことじゃないのか?
極端に言えば「処理できるのは1秒に1パケットだけだからそれ以外は破棄よ」ってこともありえる(例えば同期の問題とかで)。
913:デフォルトの名無しさん
08/12/26 16:33:49
送りすぎってのは一回の送信で沢山送ろうとしてるだけなんでは?
それならバシバシ消えると思う
914:デフォルトの名無しさん
08/12/26 20:55:05
ビジーループみたいなループの中で100バイトのパケットを送り続けるとかやったんでしょ?
テストコードとしてはやりがちだからね。
でもこれだとポロポロ落ちるんじゃね?
スリープ入れないと。