ネットワークプログラミング相談室 Port27
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/25(土) 22:46:56Programming 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辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port26
http://hibari.2ch.net/test/read.cgi/tech/1269343909/
関連スレ
ネットワークプログラミング雑談
http://hibari.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://hibari.2ch.net/test/read.cgi/tech/1086238859/
0237232
2011/04/14(木) 00:35:43.37ありがとうございます。
>>234さんの指摘のように、1つのインタフェースに複数のアドレスが定義されている場合です。
>>234
> ホストのルーティングテーブルでネクストポップを決定して、
> そのネクストポップと同じサブネットのアドレス。
浅学ですみません。。。定義した複数アドレスが、同一ネットワークの場合はどうなるでしょうか?
基本的な質問で恐縮なのですが、なぜこういう質問をしているか、
>>232の話をもう少し具体的に言うと
�@ サーバ : アドレス 192.168.0.20/24 さらに同じNICに対して、エイリアスで 192.168.0.1/24 を定義している
�A クライアント : アドレス 192.168.0.10/24
この状態で�@→�Aへ送信します。送信方法は>>232に書いたように、UDPで、ポートは固定で指定、
ホストアドレスは INADDR_ANY で作ってバインドしてあります。
�@でsendtoして�Aでrecvfromしたとき、�Aで受信したときの送信元(�@)のアドレスがどうなるか?なのです。
というのも、�@がWindowsXPの場合は、送信元アドレスが 192.168.0.20 となったのですが、
Windows7の場合は、192.168.0.1 となるのです・・・
>>234さんの指摘をもらって、route print してみると、
確かに WindowsXP では、192.168.0.0/24 の interface が 192.168.0.20 となっているのですが(>>235さんの言うプライマリですね)
Windows7の場合は、192.168.0.0/24 の interface は 192.168.0.1 となっています。
Windows7の場合、アドレスが小さいものが interface に優先されてしまう?と疑問を持った次第です。
これまでXPで使っていたプログラムで、Windows7へ持っていくと動作が変わるので、
これをなんとかしたい、というのが背景です。
0238デフォルトの名無しさん
2011/04/14(木) 06:30:29.120239デフォルトの名無しさん
2011/04/14(木) 15:29:36.22まだreadしてないたまっているバッファをすべて破棄するには
どうするのが一番スマートで速くて格好いいデスか?
0240デフォルトの名無しさん
2011/04/14(木) 15:43:31.870241デフォルトの名無しさん
2011/04/14(木) 15:53:11.93空読みが許されるのは童貞までだよねー
0242232
2011/04/14(木) 18:19:21.77結論から言うと、OSの仕様でした。(無印Win7しか確認していませんが)
http://support.microsoft.com/kb/2386184
↑のKBの修正Hotfixを当ててから、
netsh で skipassource=true にしてエイリアスのIPアドレスを
同一NICに追加してやると、プライマリ相当のアドレスで返ってくるようになりました。
またこのとき、route print すると Gateway と Interface がプライマリ相当のアドレスになることが確認できました。
>>236さんの言うようにプライマリという概念がそもそもなくなってるともいえますし、
OSの動作が、XP/2003Server → Win7/2008R2 で変わったともいえると思います。
まあプログラム側がOSの仕様を決め打ちした動きになってるのが悪いんですが・・・w
とりあえずOSのアップデートか、>>238さんの言うようにプログラム側で対処するか、
どちらかで検討します。
お騒がせしました。
0243デフォルトの名無しさん
2011/04/14(木) 19:55:54.78ソケットに対してlseekするとエラーになるんじゃん!
0244デフォルトの名無しさん
2011/04/14(木) 19:59:14.69常識的に考えて出来るはずなかろう?
0245デフォルトの名無しさん
2011/04/14(木) 20:01:50.14soket 閉じて開きなおすのはマズイのだろうか と戯言
0246デフォルトの名無しさん
2011/04/14(木) 21:36:35.720247デフォルトの名無しさん
2011/04/14(木) 21:43:05.47lseek を実装して、現在あるバッファを読み飛ばす(捨てる)だけは可
にすればいいんだがまぁ、対称性に著しく書けるインターフェースだわな
0248196
2011/04/14(木) 21:52:01.14AとBのプログラムで通信する場合ですが、こういう認識で合ってますか?
プログラムA プログラムB
↑ ↑ ユーザランド
-----|-----------------|---------
プログラムAの プログラムBの
ソケット←ーーーー→ソケット カーネル
0249デフォルトの名無しさん
2011/04/14(木) 21:52:44.84名前の196は関係ないです。
すいません。
0250デフォルトの名無しさん
2011/04/14(木) 22:10:21.58ええ。
まあ環境によるんですけど。
0251デフォルトの名無しさん
2011/04/14(木) 22:13:46.39例外もあるんですか?
0252デフォルトの名無しさん
2011/04/14(木) 22:27:29.18逆に、インカーネルなhttpdとかありうるし。
0253デフォルトの名無しさん
2011/04/14(木) 22:52:12.250254デフォルトの名無しさん
2011/04/15(金) 00:08:01.48いくつかのソケットでconnectし始めるプログラムを実行すると
一番最初のconnectはつながるまで約3秒かかるのに
ほぼ同時ながら別のスレッドでconnect呼ぶところではほぼ即座につながる
ってことが起こるんですが、何が原因でしょう?
あと、一発のconnectの待ちを短くしてやるにはどうすればいいでしょう?
0255デフォルトの名無しさん
2011/04/15(金) 00:13:37.910256デフォルトの名無しさん
2011/04/15(金) 00:18:31.32インターフェースは固定IPでupさせてます
あと、接続もIPアドレス直です
1回目のconnectと2回目のconnectは同一ホストへの接続で
ポート番号が1個違うだけなのに2回目の方が先につながるのが納得いかない。。
0257デフォルトの名無しさん
2011/04/15(金) 00:27:05.93OSは何?
0258デフォルトの名無しさん
2011/04/15(金) 00:31:52.32ひょっとしてarpテーブル見に行って該当無かったら
arp投げて3秒後synリトライしているとか?
0259デフォルトの名無しさん
2011/04/15(金) 00:35:34.94リトライになるはずないです。
ルーティング設定も手動ですか?
DNSの逆引きが行われてませんか?
0260デフォルトの名無しさん
2011/04/15(金) 00:36:19.850261デフォルトの名無しさん
2011/04/15(金) 02:23:27.15ちょ、まじってる
0262デフォルトの名無しさん
2011/04/15(金) 14:06:04.59マジ?
0263デフォルトの名無しさん
2011/04/15(金) 15:40:07.26常識
0264デフォルトの名無しさん
2011/04/15(金) 16:46:17.40いや、今でも使ってる人いるの?
0265デフォルトの名無しさん
2011/04/15(金) 16:50:47.510266デフォルトの名無しさん
2011/04/15(金) 19:03:36.63ルーティング設定も手動、DNSの逆引きは行われていないと思います。
>>260
wiresharkが使えればよいのですが
組み込み系かつWiFi直結間での通信なので・・・
とりあえずノンブロッキングで
connect→close→connect
ってすると即座につながったのでこれで良し?
0267デフォルトの名無しさん
2011/04/15(金) 19:15:37.64PeerをPCにしてperrでwireshark動かせば?
0268デフォルトの名無しさん
2011/04/15(金) 19:30:43.86たとえばWindowsのIISのHTTPサーバーはカーネルで動作するように実装されてた。
パフォーマンス優先で設計すると、そうなる。
0269デフォルトの名無しさん
2011/04/15(金) 19:43:28.92カーネルモードに移動したのがServer 2003あたりの比較的最近だった気がするけど
ちなみにLinuxにもカーネルモードのhttpdがある
0270デフォルトの名無しさん
2011/04/18(月) 12:02:15.560271デフォルトの名無しさん
2011/04/18(月) 12:06:45.71坊やならしょうがないけど、人前でそういう発言しな方が良いぞ。w
0272デフォルトの名無しさん
2011/04/18(月) 13:56:48.22システムコール呼んだら2度と帰ってこないって、あれだっけ?
まぁ、当時はカーネルスレッドなんかなかったからなぁ
0273デフォルトの名無しさん
2011/04/18(月) 15:36:01.74元祖の話とかしてどうするの? 懐かしむの?
0274デフォルトの名無しさん
2011/04/18(月) 16:29:33.470275デフォルトの名無しさん
2011/04/18(月) 17:03:04.79しょうがないよ。坊やが生まれる前からある技術だから。
0276デフォルトの名無しさん
2011/04/18(月) 18:05:41.660277デフォルトの名無しさん
2011/04/27(水) 10:01:35.90今頃バブルの話とか太古のアイドルの話しても分からないってw
nfsに限らずファイル周り呼んだら帰って来なく成るって多いorz
無線だと無線の物理層のリンクもいろいろごにょごにょしてそう。
ipで下位レイヤを気にせず使える分、いろんな状況を想定する事が求められる。
被災地の観測機器にパケット飛ばしたら、無線基地局が流されて消失してたとかね。
0278デフォルトの名無しさん
2011/04/27(水) 10:55:57.720279デフォルトの名無しさん
2011/04/27(水) 17:18:18.60サーバからデータをpush送信したいと思いってます。
ちょっと調べた範囲では余りよく分かりませんでした。特にプログラミング言語で当該機能を実装するような具体的な例を見つけることができませんでした。
何かヒントとか、または、ここを
見れば分かりやすいよ、とかありましたら、よろしく願いします。
なお、サーバはwindowsでクライアントはandroidです。
0280デフォルトの名無しさん
2011/04/27(水) 19:39:28.10送受信クライアントアプリ作ってみたいな〜
なんて思ってる人生の初心者です。
invokeとかBeginInvokeとかEndInvokeとかIAsyncResultとかもうちんぷんかんぷんです。
基礎からじっくりと使い方の学習してみたいのですが、お勧めは何かありますでしょうか?
コードの断片だけじゃてんで頭にはいんないし、書籍は○○層があってだなとかフレームの中身の話とか
で、言葉の定義で実際にはソケットよりもNIC担当の処理内容に紙面を費やしてたりと
意欲だけ空回りで、てんで前進してる気配がないので、お助けください。
0281デフォルトの名無しさん
2011/04/27(水) 19:42:56.80それはネットワークとは関係のないC#自体の話ではありませんか
ネットワークの話とは分けて勉強した方がいいと思いますが
0282デフォルトの名無しさん
2011/04/27(水) 20:02:26.51送信した後に非同期で受信した側の処理を身に付けたいんですけど
ソケットの使い方じゃなくて、非同期の勉強でつまづいてるってところが大きいですね。
非同期だとF10押していってもデバッグ出来ないですよね?別スレに行ってしまって。
どう試行錯誤していいのか、先ずそんなところから錯誤してますです。
0283デフォルトの名無しさん
2011/04/27(水) 23:33:33.79ぐぐれば非同期の作り方の例が出てくるよ。
でもスレッド作って同期でしたほうが分かりやすいし作りやすいと思う。
C#内容についてはこちらで
http://hibari.2ch.net/test/read.cgi/tech/1302422250/
0284デフォルトの名無しさん
2011/05/02(月) 16:12:32.87列挙するようなI/Fがありますでしょうか?
0285デフォルトの名無しさん
2011/05/02(月) 21:03:46.470286デフォルトの名無しさん
2011/05/03(火) 03:56:32.35WinSockには無い。
IP Helper APIを使う。
0287デフォルトの名無しさん
2011/05/05(木) 04:39:15.21NAT越え関係のプログラミングを作らないといけないのですが
何をどうすればよいのやらで、行き着いたのが
uPnPでのポートマッピングに行き着きました。
諸所の本、サイト等は見て回ったのですが、
「マルチキャストでM−SEARCH」の一点張り
マルチキャスト(UDP)で送信しても受信側がどうしてもできない?
※sendtoでの戻り値状は送れていると思うのですが。
といった所で、このGWをほぼ潰す結果になりました(´・ω・`)
何か コレみれば(・∀・)イイ!! といった物はありませんでしょうか?
0288287
2011/05/05(木) 05:03:06.460289デフォルトの名無しさん
2011/05/05(木) 09:27:46.55Microsoft Windows SDKのサンプル。 google依存症だな。
0290デフォルトの名無しさん
2011/05/05(木) 12:28:27.640291デフォルトの名無しさん
2011/05/06(金) 15:42:33.43それからどうでもいいことだけどUは大文字。Universal Plug a'n'd Play
0292デフォルトの名無しさん
2011/05/12(木) 14:57:21.15せっかくの双方向性捨ててる。
natの内側からのコネクションの帰りにデータ詰めて流すしか無いと思うよ。
0293デフォルトの名無しさん
2011/05/12(木) 15:06:16.39> しか無いと思うよ。
そんなことはありません。
0294デフォルトの名無しさん
2011/05/13(金) 04:55:32.280295デフォルトの名無しさん
2011/05/13(金) 10:11:57.94natを使う
0296デフォルトの名無しさん
2011/05/13(金) 13:53:09.20>>294の低能ぶりがいかんなく発揮されているレスだ。
0297デフォルトの名無しさん
2011/05/13(金) 15:30:54.66それとSNSサイトを作る場合のお勧め言語とかありますか?
詳しく教えてもらえると助かります
0298デフォルトの名無しさん
2011/05/13(金) 15:38:59.870299デフォルトの名無しさん
2011/05/13(金) 15:41:11.06http://en.wikipedia.org/wiki/Social_network_service#Open_source_software
続きの話は、適当な板でやって。
0300uy
2011/05/16(月) 03:07:15.98Rubyが良いんじゃないかな。
Rubyはatpagesとかで動く
言語覚えたら1ヶ月で作れるんじゃね
飲み込み速ければ1週間じゃね
Web技術はプログラム的難しさよりも動作環境を整える事が難しいけど
ようは一行目に#!ruby なんとかってかいてファイル属性を755にしてrun
0301デフォルトの名無しさん
2011/05/16(月) 04:24:51.160302デフォルトの名無しさん
2011/05/16(月) 10:50:02.160303デフォルトの名無しさん
2011/05/21(土) 00:25:49.460304デフォルトの名無しさん
2011/06/07(火) 22:55:40.15前の職場で人のを借りてて良書だったし買おうと思ったら本屋に取り寄せられないって言われた。
0305デフォルトの名無しさん
2011/06/08(水) 00:46:30.580306デフォルトの名無しさん
2011/06/08(水) 03:11:36.410307デフォルトの名無しさん
2011/06/08(水) 03:13:57.150308デフォルトの名無しさん
2011/06/08(水) 06:01:34.26内容的には古過ぎて役に立たなさそうな気がw
0309デフォルトの名無しさん
2011/06/08(水) 11:12:19.65しかも在庫切れ前野縁談結構してるところ多かったから
内容がいいだけに古本があまり出回ってないのかもな、
ブクオフのネットだと安かったが在庫なかった。
たまたまオークションでそこそこ安く買えたがラッキーだったのかね。
0310デフォルトの名無しさん
2011/06/08(水) 11:13:21.62>しかも在庫切れ前野縁談結構してるところ多かったから
しかも在庫切れ前の値段結構してるところ多かったから
0311デフォルトの名無しさん
2011/06/08(水) 21:16:37.810312デフォルトの名無しさん
2011/06/08(水) 22:55:12.40良書ほど日本人の素人に取っつきにくくて、売れないのかね
絶版になったり、改訂版が出なかったりするんだよな
「UNIXネットワークプログラミング」も原書はとっくの昔に改訂されているのに
邦訳はいつまでも2版のままだもんな
まあ良書は新しいことだけ自分でネットの文章などで補間しとけば今でも役に立つが、
新しいこと書いてあっても中身糞なのは役に立たないんけどなw
0313デフォルトの名無しさん
2011/06/08(水) 23:04:56.643版って何がかわったの?
0314デフォルトの名無しさん
2011/06/08(水) 23:25:04.09IP V6関連の増補とか、SCTPやIPsecが追加されたとか、細かいところいろいろな。
第3版出たの9年前だが、いつまでたっても邦訳改定されないので、
2年後ぐらいに原書買ってしまったんだが、まさか10年近くたってもまだ出ないとは
思わなかったわw
0315デフォルトの名無しさん
2011/06/08(水) 23:40:25.53でもIPv6って10年前と今とでわりと結構違うくね?
第4版まで待って買うかね
0316デフォルトの名無しさん
2011/06/09(木) 01:02:51.45良書は必ず読むって層が英語で読んじゃうからね。
0317デフォルトの名無しさん
2011/06/09(木) 04:51:47.78ietfとかの国際会議で議論までしちゃう連中だと、日本語版を買う必要性も無いだろうな。現地で英語版買ってそのまま日本でも読み続けてると思う。
0318デフォルトの名無しさん
2011/06/09(木) 15:33:13.82全部カタカナにするだけでいいんだが・・・
0319デフォルトの名無しさん
2011/06/09(木) 16:39:49.45エラーログまで和訳され手分けわかめなのと同じ。
0320デフォルトの名無しさん
2011/06/09(木) 18:09:23.210321デフォルトの名無しさん
2011/06/10(金) 03:01:03.800322デフォルトの名無しさん
2011/06/10(金) 11:53:51.750323デフォルトの名無しさん
2011/06/10(金) 21:56:15.88著者のスティーブンスが死んじゃったからなぁ。
0324デフォルトの名無しさん
2011/06/10(金) 23:30:55.59もうすぐオレも死ぬんじゃないか? って気になるわ。
0325デフォルトの名無しさん
2011/06/10(金) 23:52:22.990326デフォルトの名無しさん
2011/06/11(土) 01:13:10.10去年、大学のときのたばこ好きの先輩が食道癌になって逝った
今年、高校のときの同級生がバイクで事故死した
0327デフォルトの名無しさん
2011/06/12(日) 00:36:34.670328デフォルトの名無しさん
2011/06/12(日) 01:52:12.81ipv6は正にこれからなんだが
0329デフォルトの名無しさん
2011/06/12(日) 03:07:19.32参考になるサイトありませんか?
0330デフォルトの名無しさん
2011/06/12(日) 04:17:27.59ありません
0331デフォルトの名無しさん
2011/06/12(日) 17:08:38.36爺さんじゃなかったはずだけど持病でもあったのかな? プログラマとか持病多いからなあ。
ipv4聡明期の村井さんとか砂原さんじゃこれから20年とかとても戦えないからなあ。
ウィンドウズ95の発売で一気に一般化したipv4から16年か。もうアドレス枯渇で役目を終えようとしてるけど。
0332デフォルトの名無しさん
2011/06/12(日) 20:10:01.48自。なぜかわしらない。当時はIPv6の話をしても誰も聞く耳をもたなかったからか?
0333デフォルトの名無しさん
2011/06/12(日) 21:30:06.79非同期のUDP による送受信プログラムを一台のPC で検証しています
パケットモニタしたいと思いフィルタリングで
ip.addr == 127.0.0.1 && udp.port == 5030
として、applyするのですが、パケットがキャプチャーできません、何処か間違ってますか?
0334デフォルトの名無しさん
2011/06/12(日) 21:34:47.94-i lo
0335デフォルトの名無しさん
2011/06/12(日) 21:36:35.68windows wireshark loopback
0336デフォルトの名無しさん
2011/06/12(日) 21:42:51.49鼻息荒いな 夕飯食ったか?
■ このスレッドは過去ログ倉庫に格納されています