11/04/14 21:52:01.14
ソケットでのプロセス間通信について質問です。
AとBのプログラムで通信する場合ですが、こういう認識で合ってますか?
プログラムA プログラムB
↑ ↑ ユーザランド
-----|-----------------|---------
プログラムAの プログラムBの
ソケット←ーーーー→ソケット カーネル
249:デフォルトの名無しさん
11/04/14 21:52:44.84
↑
名前の196は関係ないです。
すいません。
250:デフォルトの名無しさん
11/04/14 22:10:21.58
>>248
ええ。
まあ環境によるんですけど。
251:デフォルトの名無しさん
11/04/14 22:13:46.39
>>250
例外もあるんですか?
252:デフォルトの名無しさん
11/04/14 22:27:29.18
プロトコルスタックがカーネルにある必要は無いし、
逆に、インカーネルなhttpdとかありうるし。
253:デフォルトの名無しさん
11/04/14 22:52:12.25
NFSサーバとかカーネル内にある。
254:デフォルトの名無しさん
11/04/15 00:08:01.48
インターフェースがupされた直後に
いくつかのソケットでconnectし始めるプログラムを実行すると
一番最初のconnectはつながるまで約3秒かかるのに
ほぼ同時ながら別のスレッドでconnect呼ぶところではほぼ即座につながる
ってことが起こるんですが、何が原因でしょう?
あと、一発のconnectの待ちを短くしてやるにはどうすればいいでしょう?
255:デフォルトの名無しさん
11/04/15 00:13:37.91
DHCPとかDNS引いてるんじゃない?
256:デフォルトの名無しさん
11/04/15 00:18:31.32
ああすいません
インターフェースは固定IPでupさせてます
あと、接続もIPアドレス直です
1回目のconnectと2回目のconnectは同一ホストへの接続で
ポート番号が1個違うだけなのに2回目の方が先につながるのが納得いかない。。
257:デフォルトの名無しさん
11/04/15 00:27:05.93
ARPが必要だけど、そんな時間かからない。
OSは何?
258:デフォルトの名無しさん
11/04/15 00:31:52.32
linuxです
ひょっとしてarpテーブル見に行って該当無かったら
arp投げて3秒後synリトライしているとか?
259:デフォルトの名無しさん
11/04/15 00:35:34.94
ARP終わらなければパケット投げられません。
リトライになるはずないです。
ルーティング設定も手動ですか?
DNSの逆引きが行われてませんか?
260:デフォルトの名無しさん
11/04/15 00:36:19.85
ethersharkでパケットダンプすれば?
261:デフォルトの名無しさん
11/04/15 02:23:27.15
>>260
ちょ、まじってる
262:デフォルトの名無しさん
11/04/15 14:06:04.59
>>253
マジ?
263:デフォルトの名無しさん
11/04/15 15:40:07.26
>>262
常識
264:デフォルトの名無しさん
11/04/15 16:46:17.40
>>263
いや、今でも使ってる人いるの?
265:デフォルトの名無しさん
11/04/15 16:50:47.51
>>264 うちでは、普通に使ってるが
266:デフォルトの名無しさん
11/04/15 19:03:36.63
>>259
ルーティング設定も手動、DNSの逆引きは行われていないと思います。
>>260
wiresharkが使えればよいのですが
組み込み系かつWiFi直結間での通信なので・・・
とりあえずノンブロッキングで
connect→close→connect
ってすると即座につながったのでこれで良し?
267:デフォルトの名無しさん
11/04/15 19:15:37.64
Peerも組み込み?
PeerをPCにしてperrでwireshark動かせば?
268:デフォルトの名無しさん
11/04/15 19:30:43.86
>>264
たとえばWindowsのIISのHTTPサーバーはカーネルで動作するように実装されてた。
パフォーマンス優先で設計すると、そうなる。
269:デフォルトの名無しさん
11/04/15 19:43:28.92
されてたってまたユーザモードに戻されたの?
カーネルモードに移動したのがServer 2003あたりの比較的最近だった気がするけど
ちなみにLinuxにもカーネルモードのhttpdがある
270:デフォルトの名無しさん
11/04/18 12:02:15.56
NFSもカーネルモードのがあったな
271:デフォルトの名無しさん
11/04/18 12:06:45.71
あったなじゃなくて、元祖のSUNの実装がインカーネルなんだよ。
坊やならしょうがないけど、人前でそういう発言しな方が良いぞ。w
272:デフォルトの名無しさん
11/04/18 13:56:48.22
>>271
システムコール呼んだら2度と帰ってこないって、あれだっけ?
まぁ、当時はカーネルスレッドなんかなかったからなぁ
273:デフォルトの名無しさん
11/04/18 15:36:01.74
>>271
元祖の話とかしてどうするの? 懐かしむの?
274:デフォルトの名無しさん
11/04/18 16:29:33.47
NFS-3GもFUSEからカーネルに取り込まれたよ。
275:デフォルトの名無しさん
11/04/18 17:03:04.79
>>273
しょうがないよ。坊やが生まれる前からある技術だから。
276:デフォルトの名無しさん
11/04/18 18:05:41.66
今はもう使われてないしなぁ
277:デフォルトの名無しさん
11/04/27 10:01:35.90
おじいちゃんは昔話好きだからな。
今頃バブルの話とか太古のアイドルの話しても分からないってw
nfsに限らずファイル周り呼んだら帰って来なく成るって多いorz
無線だと無線の物理層のリンクもいろいろごにょごにょしてそう。
ipで下位レイヤを気にせず使える分、いろんな状況を想定する事が求められる。
被災地の観測機器にパケット飛ばしたら、無線基地局が流されて消失してたとかね。
278:デフォルトの名無しさん
11/04/27 10:55:57.72
都会ね。
279:デフォルトの名無しさん
11/04/27 17:18:18.60
ちょっとお尋ねします。
サーバからデータをpush送信したいと思いってます。
ちょっと調べた範囲では余りよく分かりませんでした。特にプログラミング言語で当該機能を実装するような具体的な例を見つけることができませんでした。
何かヒントとか、または、ここを
見れば分かりやすいよ、とかありましたら、よろしく願いします。
なお、サーバはwindowsでクライアントはandroidです。
280:デフォルトの名無しさん
11/04/27 19:39:28.10
.NET framework4.0とC#で非同期TCPでソケット通信してバイナリデータの
送受信クライアントアプリ作ってみたいな~
なんて思ってる人生の初心者です。
invokeとかBeginInvokeとかEndInvokeとかIAsyncResultとかもうちんぷんかんぷんです。
基礎からじっくりと使い方の学習してみたいのですが、お勧めは何かありますでしょうか?
コードの断片だけじゃてんで頭にはいんないし、書籍は○○層があってだなとかフレームの中身の話とか
で、言葉の定義で実際にはソケットよりもNIC担当の処理内容に紙面を費やしてたりと
意欲だけ空回りで、てんで前進してる気配がないので、お助けください。
281:デフォルトの名無しさん
11/04/27 19:42:56.80
> invokeとかBeginInvokeとかEndInvokeとかIAsyncResultとか
それはネットワークとは関係のないC#自体の話ではありませんか
ネットワークの話とは分けて勉強した方がいいと思いますが
282:デフォルトの名無しさん
11/04/27 20:02:26.51
確かにそうかも。
送信した後に非同期で受信した側の処理を身に付けたいんですけど
ソケットの使い方じゃなくて、非同期の勉強でつまづいてるってところが大きいですね。
非同期だとF10押していってもデバッグ出来ないですよね?別スレに行ってしまって。
どう試行錯誤していいのか、先ずそんなところから錯誤してますです。
283:デフォルトの名無しさん
11/04/27 23:33:33.79
>>280
ぐぐれば非同期の作り方の例が出てくるよ。
でもスレッド作って同期でしたほうが分かりやすいし作りやすいと思う。
C#内容についてはこちらで
スレリンク(tech板)
284:デフォルトの名無しさん
11/05/02 16:12:32.87
winsockでプロセスが生成しているソケットを
列挙するようなI/Fがありますでしょうか?
285:デフォルトの名無しさん
11/05/02 21:03:46.47
ない。
286:デフォルトの名無しさん
11/05/03 03:56:32.35
>>284
WinSockには無い。
IP Helper APIを使う。
287:デフォルトの名無しさん
11/05/05 04:39:15.21
ご存知の方いらっしゃれば助言頂ければ幸いです。
NAT越え関係のプログラミングを作らないといけないのですが
何をどうすればよいのやらで、行き着いたのが
uPnPでのポートマッピングに行き着きました。
諸所の本、サイト等は見て回ったのですが、
「マルチキャストでM-SEARCH」の一点張り
マルチキャスト(UDP)で送信しても受信側がどうしてもできない?
※sendtoでの戻り値状は送れていると思うのですが。
といった所で、このGWをほぼ潰す結果になりました(´・ω・`)
何か コレみれば(・∀・)イイ!! といった物はありませんでしょうか?
288:287
11/05/05 05:03:06.46
補足:環境は、Win32のVC++です。
289:デフォルトの名無しさん
11/05/05 09:27:46.55
>>287
Microsoft Windows SDKのサンプル。 google依存症だな。
290:デフォルトの名無しさん
11/05/05 12:28:27.64
無理(無駄)なことをしてるだけのような
291:デフォルトの名無しさん
11/05/06 15:42:33.43
使ってるルータがちゃんと対応してるかどうか調べたほうがいいよ。
それからどうでもいいことだけどUは大文字。Universal Plug a'n'd Play