- 1 名前:デフォルトの名無しさん [2012/10/31(水) 17:05:08.29 ]
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port28 toro.2ch.net/test/read.cgi/tech/1334736934/ 関連スレ ネットワークプログラミング雑談 toro.2ch.net/test/read.cgi/tech/1235800707/
- 705 名前:703 mailto:sage [2014/01/15(水) 15:14:44.10 ]
- >>704
? だから、man select いわくSOCKET + 1 だけど、少しだけ大きいことが大きな問題になるの? って質問なんだけど? 2.に関して誘導してもらえると助かります。
- 706 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 15:16:27.42 ]
- >>703
「ソケット select nfds」でググるとトップに「select(2)の第一引数にディスクリプタの最大値を渡すのは間違い?」という ページがヒットするんだが、当然ここは読んだんだろうな?
- 707 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 15:21:08.70 ]
- >>705
> だから、man select いわくSOCKET + 1 だけど、少しだけ大きいことが大きな問題になるの? > って質問なんだけど? しるかボケ 心配ならソース読め > 2.に関して誘導してもらえると助かります。 この板のスレ一覧をboostで検索することも思いつかないのか
- 708 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 15:24:54.82 ]
- >>706
そのページのリンク先のMicrosoftのページには > nfds [in] > Ignored. The nfds parameter is included only for compatibility with Berkeley sockets. って書かれてるね。
- 709 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 15:31:06.41 ]
- manでmax(all fds)+1を渡せって書かれてるのに、なんでそれに従いたくないの?
- 710 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 15:52:33.56 ]
- >>707
知らないならノイズが増えるだけだから回答を差し控えようよ
- 711 名前:703 mailto:sage [2014/01/15(水) 16:13:14.75 ]
- >>706
おおおおお 私はあなたを愛してる ちょびっと感動。
- 712 名前:703 mailto:sage [2014/01/15(水) 16:18:14.90 ]
- >>708
うむむ この悩み多き子羊に悩みをふやすとは。 実は、Windowsベースで開発するか、Linuxベースで開発するか、JavaなのかC++なのか 悩み多き状態でありまするです。 bdb を別の目的で使っているのでなんとなく感動ですが、 変にブロッキングされないのであれば、どーーーんと大きな値をってやつですかね?
- 713 名前:703 mailto:sage [2014/01/15(水) 16:21:29.31 ]
- >>709
非常に単純なコーディングの問題 大して適当な大きな値で問題なさそげなのに、なぜnfds + 1 なんだろうか?、と #死んでもタイムアウトは使わんポリシーは維持しております四 この場合、fdsの値を計算で出すにしろ、もうっちっと適当な値でも問題ないのでは?と そうするとコードが非常にシンプルになりまする
- 714 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 16:43:20.13 ]
- そんな手抜きコードでシンプルとかお前終わってるよ
- 715 名前:703 mailto:sage [2014/01/15(水) 16:47:38.37 ]
- >>714
終わってるかもねぇ ただ、最大値+1で無くとも動くのになぜ、最大値+1なのかに疑問が生じたから、とだけ言っておこう
- 716 名前:703 mailto:sage [2014/01/15(水) 16:49:20.70 ]
- >>710
ノイズにしなければよいかと思います。 >>707に ttp://mattn.kaoriya.net/software/lang/c/20090114140035.htm を読んだ感想を一言だけ言わせればよいのでは?と思う次第です。
- 717 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 17:01:03.05 ]
- >>713
そんなところを悩みどころにしてるようじゃ、まともなプログラムなんて到底書けないから 仕様通りに書いても大して難しいコードにならないのに
- 718 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 18:16:58.47 ]
- >>715
> ただ、最大値+1で無くとも動くのになぜ、最大値+1なのかに疑問が生じたから、とだけ言っておこう だから知りたきゃコード読めば正解がわかるだろボケ
- 719 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 18:18:13.20 ]
- >>716
>>706も707も俺だし
- 720 名前:デフォルトの名無しさん mailto:sage [2014/01/15(水) 23:48:25.09 ]
- 久振りにきたら沸いてるね
- 721 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 14:34:08.34 ]
- いつ来ても涌いてる
- 722 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 21:33:39.15 ]
- 送信先のNICを指定したいんだけど
どうしたらいいかな
- 723 名前:デフォルトの名無しさん mailto:sage [2014/01/27(月) 22:42:26.60 ]
- Linux なら SO_BINDTODEVICE
他の環境は知らん
- 724 名前:デフォルトの名無しさん mailto:sage [2014/01/28(火) 00:57:44.05 ]
- >>723
ありがとう! これは素晴らしい オレのインターフェースにSO_BINDTODEVICEしてもいいよ ていうか、いつのまにこんなオプション出来てたんだろ・・・ ソケットってどんどんオプション増えてくな
- 725 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 02:48:10.75 ]
- socatコマンドで、接続元IPアドレスを知りたいんだけど
環境変数かなんかで見れたりする?
- 726 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 07:49:17.49 ]
- >>722
奴らは街角で拉致られてタコ部屋に押し込められて強制労働させられてるのか? 自ら希望して派遣会社に登録したんじゃないのか? まずそこをハッキリして貰いたいんだが。
- 727 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 11:23:34.57 ]
- NICってそんなに恐ろしいのか
- 728 名前:デフォルトの名無しさん mailto:sage [2014/01/31(金) 16:43:15.95 ]
- 確かにでかいルーターに押し込められてる NIC はタコ部屋って感じがするな (w
- 729 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 00:01:59.17 ]
- windoswにおけるネットワーク通信はすべて
winsockライブラリを通して行われているの?
- 730 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 00:33:53.49 ]
- win dos (w
- 731 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 16:06:50.91 ]
- widsdomはない
- 732 名前:デフォルトの名無しさん mailto:sage [2014/03/02(日) 16:15:30.12 ]
- netbios.dll は何もしないのか
- 733 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 16:29:44.87 ID:4dqOfNxj]
- winsockの勉強を始めてconnect使ってみたんだが適当なアドレス(111.111.111.111とか0.0.0.0)とか入れてみても全くSOCKET_ERRORを吐いてくれない
これってこういうもんなんですかね?
- 734 名前:デフォルトの名無しさん mailto:sage [2014/03/13(木) 16:54:51.16 ID:dvaQTbQU]
- UDP
- 735 名前:デフォルトの名無しさん [2014/04/15(火) 11:58:23.72 ID:FRZaT020]
- openssl
- 736 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 12:32:59.42 ID:WaetxQT9]
- 先に進めてみればわかる
- 737 名前:デフォルトの名無しさん mailto:sage [2014/05/17(土) 23:03:21.87 ID:gMQ/DgzW]
- 特定のマシンにARPパケット投げて、
ARPテーブルのMACを書き換えているのですが、 無線LANの場合、期待通りになりません。 原因わかりますでしょうか? Windowsで最新WinPcapライブラリ使って ARPパケットを投げています。 両マシンとも無線LANで同じネットワークです。 アクセスポイントの問題かな。
- 738 名前:デフォルトの名無しさん [2014/05/17(土) 23:13:54.36 ID:G8Lb2FJE]
- MAC偽装しているなら、無線区間のMAC偽装はWinPCAPではできない
- 739 名前:デフォルトの名無しさん mailto:sage [2014/05/19(月) 23:06:58.53 ID:8NVWe51U]
- >>738
なるほど、そういうことでしたか、納得。
- 740 名前:デフォルトの名無しさん mailto:sage [2014/05/21(水) 21:05:00.89 ID:e27UFOXq]
- WinPcapライブラリの使い方の良い情報源はないでしょうか?
できればC#から使いたい
- 741 名前:デフォルトの名無しさん [2014/05/21(水) 21:08:37.78 ID:v/u6M390]
- WinPcapNet
- 742 名前:デフォルトの名無しさん mailto:sage [2014/05/22(木) 08:51:43.06 ID:pX1Bpa+a]
- ありがとう
- 743 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 14:27:22.26 ID:8MnQl1Rb]
- ここにいる人たちには初歩的なことかもしれませんが、教えてください
Linuxでソケットを使ったプログラムを作っているのですが、少し大きめのデータを何個かsend,recvした後に サーバ、クライアントでcloseするとconnection reset by peerが時々出るようになりました。 closeするタイミングによってまだ残っている処理(send,recv)が取り残されているように思うのです。 サーバとクライアントでcloseするタイミングを同期する方法はありますでしょうか? よろしくお願いします
- 744 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 15:13:58.52 ID:pYRByoGi]
- >>743
通常はcloseしても送信しきる先に切られることは無いので 別のことが原因と思います
- 745 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 15:38:02.72 ID:8MnQl1Rb]
- >>744
有難う、もう少し探ってみます。
- 746 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 16:35:42.74 ID:ZfdboDuT]
- >>743
>サーバとクライアントでcloseするタイミングを同期する方法はありますでしょうか? クライアントとサーバ上のアプリケーション間通信について、 以下のケースに応じて通信の終了に関する規約(プロトコル)を決める (1) データ送信が必ず一方向のケース(例:パイプ) 送信側は任意にcloseできるが、受信側ではソケットからの 終了通知(データ長=0)を待ってからcloseしなければならない (2) 要求/応答のペアからなるトランザクションが常に同一側で発生するケース(例:HTTP/FTP/SMTP) 要求メッセージ送信側は任意にcloseできるが、応答メッセージ送信側では ソケットからの終了通知(データ長=0)を待ってからcloseしなければならない (3) データ送信要求が任意の時点かつ双方の側で発生するケース 制御メッセージとして通信終了要求(例:"QUIT")と通信終了応答(例:"OK")を定義し、 正常に通信を終了させたい時は終了要求メッセージを送信し応答を待つ 要求を受信した終了受け入れ側では応答メッセージを送信して即座にソケットをcloseする 終了要求側では応答メッセージ受信を確認してからソケットをcloseする (3)のケースは複雑な手順を踏まなければならないのだから、連動テストで問題が発生してから 解決策を悩むのではなく、上流の設計工程でアプリケーション間通信プロトコルの全体を ステートマシンとして形式的に定義し、正当性を検証しておくことが望ましい
- 747 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 16:56:39.59 ID:afR3dkD/]
- >>746にあるとおり、アプリケーションレイヤのプロトコルを決めてないところに問題があると思う
このメッセージを送信したらcloseする、このメッセージを受信したらcloseする、とか mibをダンプするコマンド(nstatとか)でTcpExtTCPAbortOnCloseがインクリメントされてたら、 >>743の推測通り、アプリケーションがメッセージを吸い上げる前にcloseが発行されてると思う
- 748 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 22:16:48.00 ID:oYteh1Pa]
- 無線で電波が途切れた場合とかどうテストしたらいいん?
- 749 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 22:32:20.13 ID:ZfdboDuT]
- >>748
・単体テストであれば、スタブ側で電波途切れのエラーを返す ・有線で組み通信中にケーブルを引き抜き擬似的に現象を起こす ・金属ケースや地下室などの電波を遮蔽できる環境を用意する 頭を使えば、様々なアイデアがでると思うよ
- 750 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 22:39:04.87 ID:D6sqOe5Q]
- >>748
どのレベルのプログラムの話なんだ? ドライバ?ネットワークスタック?アプリケーション?
- 751 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 22:49:51.34 ID:yvNnNrOK]
- >>748
ノートPCを持って電波が途切れる所まで離れてみる 青歯で実際にやったことあるぞww
- 752 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 23:30:00.41 ID:1rlrU+oI]
- 相手の電源切ればいいじゃん
|

|