ネットワークプログラミング相談室 Port27at TECH
ネットワークプログラミング相談室 Port27 - 暇つぶし2ch120:デフォルトの名無しさん
11/02/06 00:34:03
>>119
何処に無線ルーターをつないで、もう一台に繋いだんだ?
もう一台ってPCか?
有線で繋いだのか無線で繋いだのか?
無線に決まってるとか言うなよ。どう繋いだかはお前にしか判らないんだよ。
親機っていうのも無線ルーターだよな?それに無線で繋いだのかもしれないしな。

文章でも良いから曖昧さのない様に説明しろ。

121:デフォルトの名無しさん
11/02/06 01:03:45
これがネタニマジレスか

122:デフォルトの名無しさん
11/02/06 13:20:34
>>119
文章より図の方が状況がわかりやすいかなと思ったから
俺は115を読んでこんな感じだろうかと勝手に想像したので
URLリンク(www.dotup.org)
子ルータをAPモードにして全員一律に親ルータからアドレスもらってひとつのサブネットにまとめれば解決するんじゃないかなと考えた
まぁつまりプログラミングの問題じゃなくてネットワーク環境設定の問題だろうと思ってるわけだけど
pingは通る?

123:デフォルトの名無しさん
11/02/06 21:05:03
>>120
親機は有線、子機は無線です。
繋ぐのはPCです。

>>122
正確な図、ありがとうございます。
そのとおりです。

>子ルータをAPモード
この時点で詰みそうですが、ググリながらやってみようかと思います。
まず、APモードとは何かから探さなければ・・・

>pingは通る?
192.168~~のデフォルトゲートウェイに、pingを試したところ、
ちゃんと通ってるようです。
それと、ipconfig /allで確認したところ、
192.~.1と192.~.2しかありませんでした。

124:デフォルトの名無しさん
11/02/06 21:28:07
>>123
1. 親機ルーターは192.168.2.xへの宛先を持つパケットが来たら
192.168.1.3に投げなければいけないことを知っている?
2. 子機ルータのデフォルトルートは192.168.1.1になってる?
3. PC1のデフォルトルートは192.168.1.1になってる?
4. PC2のデフォルトルートは192.168.2.1になってる?


125:デフォルトの名無しさん
11/02/07 00:12:55
ルータの説明書を読むべき

126:デフォルトの名無しさん
11/02/07 20:14:03
>>124
1:知りませんでした。
2:なっています。
3:なっています。
4:なっています。

>>125
それもそうですね・・・
読み直してみます。

127:デフォルトの名無しさん
11/02/08 21:44:01
ipv6のパーサ書いてて構文上はOKみたいなんだけど
2文字のコロン「::」もIPV6のアドレスとして有効な表現なの?

128:デフォルトの名無しさん
11/02/08 21:48:35
>>127
それは 0 を省略した形

~:0000:~ なら ~::~ にできる

129:デフォルトの名無しさん
11/02/08 21:51:17
>>127
あっ失礼。2回以上の連続した0ね。

130:127
11/02/08 22:24:03
えっと、一応その形式は知ってるんだが
疑問なのは数字なんか付かない、まさにコロン2つ「だけ」の場合

ABNF抜粋すると問題の箇所は
ipv6address =
| //色々なケース
| //色々なケース
| [*6(h16":")h16]"::"
となってて、[]は省略可能なんで
他に全く数字の付かない「::」のみのケースがあるのよ

131:127
11/02/08 22:25:40
あ、失礼、それも含めて「::」=0ということか

132:127
11/02/08 22:27:55
>>128 言い忘れてた、サンキュ

133:デフォルトの名無しさん
11/02/08 23:16:56
うぜえ

134:デフォルトの名無しさん
11/02/09 01:46:28
URLリンク(dl8.getuploader.com)
こうやってるのに
URLリンク(dl8.getuploader.com)
こう返ってくるんですが

何で差分だけの取得が出来ず、かつレス番1が壊れてしまうのでしょうか

135:デフォルトの名無しさん
11/02/09 01:51:18
書き忘れましたが最初の取得だけはうまく出来ます
差分の取得のはずがうまく出来ず、こうなります

返ってきたdatを"\n"で区切ってString[]に入れたものです
デバッガで見る限りではレンジやモディファイは正しいと思われる値にはなっています・・・

136:デフォルトの名無しさん
11/02/09 02:36:55
ログをまったく読んでない上にテキストでなく画像とか喧嘩売ってるんだよな?

137:デフォルトの名無しさん
11/02/18 00:05:51
マルチキャストの受信をしているのですが、ブロードキャストで送信されると受信してしまいます。
何故なのでしょうか?

138:デフォルトの名無しさん
11/02/20 10:21:33.25
同じ部屋に居る椰子が大声で騒いだら聞こえるのと同じ。
黙って無視すればいい。

139:137
11/02/20 22:59:15.93
>>138
どういうことなのでしょうか?

140:デフォルトの名無しさん
11/03/05 06:38:28.58
ネットワークプログラミング初心者なのですが、何から始めればよいでしょうか。
よくソケットからと言われますが、具体的にどういう処理から始めるのでしょう。


141:デフォルトの名無しさん
11/03/05 06:41:15.99
適切な言語とフレームワーク使えばソケット気にせず書けるようになる

142:デフォルトの名無しさん
11/03/05 12:11:24.46
>>140
> ネットワークプログラミング初心者なのですが、何から始めればよいでしょうか。

お約束だが、「やりたいことを見つける」ことからかな。

143:デフォルトの名無しさん
11/03/05 12:36:41.44
>>137
バグだろ。

144:デフォルトの名無しさん
11/03/06 07:52:23.37
winsockで通信ソフトを作っているのですが、ある利用者の環境では
socket関数でINVALID_SOCKETエラーが発生したそうです。
XP SP3では一度も発生したことがないのですが、原因が分かる方が
いましたら、ご教授下さい。

145:デフォルトの名無しさん
11/03/06 09:48:50.39
>>144
バグだろ。

146:デフォルトの名無しさん
11/03/06 09:57:00.20
・WSAStartupの戻り値は確認しているのか?
・ある利用者の環境ってのがどういう環境かわからない

147:デフォルトの名無しさん
11/03/06 10:14:44.28
> ご教授下さい。
どこの馬の骨かわからん奴を弟子に取る気はないが、俺だったら、
WSAGetLastErrorを仕込んで置く事を忘れなかったな。

148:デフォルトの名無しさん
11/03/06 12:27:16.71
IPv6インストールしてないのにPF_INET6使おうとしたとか?

149:デフォルトの名無しさん
11/03/06 13:12:00.11
>>144
原因はそんな情報で分かる人間が居ると思うような奴が
作ったプログラムだから

150:デフォルトの名無しさん
11/03/07 09:51:41.74
>>145
ハゲだろ

151:デフォルトの名無しさん
11/03/09 23:43:18.69
おまえらって、TCP、UDP、IPライブラリの組み込みへの移植とかやったことある

152:デフォルトの名無しさん
11/03/10 00:24:52.12
>>151 あるけど、なに?


153:デフォルトの名無しさん
11/03/10 00:34:23.56
ソースくれ

154:デフォルトの名無しさん
11/03/10 05:42:54.02
>>153
必要なら買うなり、OSS使うなりしなよ。
ゼロから作ってデバッグするのは大変だよ。

155:デフォルトの名無しさん
11/03/10 09:21:40.36
そうだね
どっかのPICのソース流用しようと思ったけど
プロトコル完全実装じゃなくて
かなり適当に必要最小限しか作ってなくて
結局参考にならなかったな

156:デフォルトの名無しさん
11/03/10 22:42:00.33
>>154
なんか良いOSSのライブラリ教えて

157:デフォルトの名無しさん
11/03/11 00:12:21.92
154じゃないがuIPあたりは?

158:デフォルトの名無しさん
11/03/12 20:28:08.90
質問させてください。
XP環境では問題ないのですが、Windows Vistaで
s=socket(AF_INET, SOCK_RAW, IPPROTO_IP);
とするとエラーになります(INVALID_SOCKETを返す)。

目的はWindows7からチカチカ点滅しなくなった
タスクトレイのネットワークアイコン(通信の有無を示す)の自作です。
(有無だけに注目して内容を見ないパケットモニタのようなものです。)

ネット上で調べた結果、Vistaからは上のことは無理で
それをやりたければWFP(Windows Filtering Platform)とやらを
使うしかない、という答えに現時点では行き着いています。
実際、1.うん、WFPを使うしかないね。なのでしょうか。
それとも2.いや、他にやりようがあるよ。なのでしょうか。

さらに質問すると、Windows7をご利用されている方は
タスクトレイのネットワークアイコンを見ても通信の有無が
わからないことについて、どのように解決(もしくは許容)されていますか?


159:デフォルトの名無しさん
11/03/17 14:18:43.99
setsockoptでTCPの再送間隔と再送回数を制御したいんだけど
なにをいじるんだっけか

160:デフォルトの名無しさん
11/03/17 14:18:52.60
おっぱい!

161:デフォルトの名無しさん
11/03/17 17:32:18.42
>>159 OSは?
*BSD なら sysctl で設定
Linux なら /proc で設定
Windows はしらん
その他の Unix なら man よめ


162:デフォルトの名無しさん
11/03/18 14:08:08.96
>>161
setsockoptで制御したいんです。

163:デフォルトの名無しさん
11/03/18 17:12:57.19
>>161
ワロタ、setsockoptで言っているのに
いつもトンチンカンなことをして周りに迷惑かけてるんじゃないか

164:デフォルトの名無しさん
11/03/19 14:50:47.28
>>163
sockopt インターフェースは, カーネルのソース読むとないな, *BSDとLinux


165:デフォルトの名無しさん
11/03/19 15:02:58.74
Windowsだってソケットごとには設定できないよ

166:デフォルトの名無しさん
11/03/19 15:22:20.24
>>163 ここはボケないと


167:デフォルトの名無しさん
11/03/22 11:19:33.73
>>161
Linuxだけどさ、どこで設定するのよ
そんな設定箇所無いよ
憶測でモノを言っているの?

168:デフォルトの名無しさん
11/03/22 17:14:46.99
教えてください。
もしスレチでしたら誘導をお願いします。

以下のようなことをしたいとお勉強中です。
・snmp を使用してネットワーク上の機器の状態を管理する
・状態の取得には snmp の trap を使用する
・ネットワーク上には snmp のバージョン v1 と v2c の機器が存在していて両方に対応したい
・当人はソケットを使用したプログラムは経験があるものの、ネットワークそのものは初心者

で、質問です。
・v1 trap の PDU には Enterprise などがありますが、v2c には存在しません。
 これは v2c では取得できないということでしょうか。データ部に存在するのでしょうか。
 ※できれば v1 と v2c の実処理を行なう箇所を同じ処理で統一したいため同じデータを取得できたら便利だな、と
・v2c trap の PDU は v2 のものと構成が同じであり、
 Comunity の部分だけが v1 と同等であるとの認識は正しいでしょうか

よろしくお願いします。

169:デフォルトの名無しさん
11/03/22 23:24:39.15
誰かツイッターapiについて詳しい人いませんか?

api制限で150回までに制限されてしまうのは仕方ないのでしょうか?

でもtweenとかは常に最新の状態に更新出来ている気がするのですが。。
あれはどうやっているのでしょうか?

170:デフォルトの名無しさん
11/03/23 10:49:22.40
>>169
APIを使わなくても見れる情報なら、APIを使わなければよい

171:デフォルトの名無しさん
11/03/24 00:32:35.57
>>169
>api制限で150回までに制限されてしまうのは仕方ないのでしょうか?

いいえ。
個別に交渉すれば、割と簡単に制限を緩めてもらえるみたいです。


172:デフォルトの名無しさん
11/03/24 12:15:07.27
>>170-171
API使わなくても見れる情報というのは例えばどんなものでしょう?

個別に交渉するということはどういうことですか?

173:デフォルトの名無しさん
11/03/24 13:41:55.22
>>172
ブラウザ使ってツイッタ見た事ないのか?

html 取得すればよい。鯖負荷は・・・・。


174:デフォルトの名無しさん
11/03/24 19:32:59.58
やはりその方法でしたか。
鯖負荷ってどれぐらいのアクセス数なら大丈夫でしょうか?
一秒1アクセスはやっぱきついですかね?

175:デフォルトの名無しさん
11/03/24 20:34:01.37
>>174
WEBアクセスでも認証なしで同一IPから何度もアクセスしてるとAPIと同じようにブロックされるよ

176:デフォルトの名無しさん
11/03/24 22:29:35.14
1アクセス/1秒は、偽計業務妨害の疑いで逮捕、20日間勾留されるくらい、悪質な行為。

177:デフォルトの名無しさん
11/03/25 11:38:58.02
逮捕されるところでした・・
ありがとうございました・・

178:デフォルトの名無しさん
11/03/25 17:59:51.89
ブチこまれた前例つくっちゃってるからな
前例がある事は容赦なく捕まえるぞ警察は

179:デフォルトの名無しさん
11/03/25 20:48:52.41
>>176
無罪になったんだから別によくね?
拘留期間中の分お金もらえるし

180:デフォルトの名無しさん
11/03/25 21:19:42.91
不起訴処分と無罪はまったく別物だぞ

181:デフォルトの名無しさん
11/03/25 21:45:30.86
有罪だが罰はほぼ勘弁してやった、という結果だったよな

182:デフォルトの名無しさん
11/03/26 23:32:01.24
懲りずにやる奴が出て売ると、有罪+実刑になるパターン

183:デフォルトの名無しさん
11/03/26 23:32:10.35
毎秒ごとに株価とか為替採りたいと思ってた所だったw
前例有るのかw

184:デフォルトの名無しさん
11/03/26 23:36:53.11
岡崎図書館  岡崎市立図書館 で検索してみ

185:デフォルトの名無しさん
11/03/26 23:41:36.56
ネットワークプログラミングをやってる人間であれば、知っておかなければ恥だ

186:デフォルトの名無しさん
11/03/26 23:43:10.39
恥で済めばいいが、人生終了しかねないからな

187:デフォルトの名無しさん
11/03/26 23:48:55.16
ネットワークプログラミングの勉強中で、以下のようなプログラムを作成しています。

1.ソケットを3つ開き、selectで待ちます。
(a_fd、b_fd、c_fdとする。)
2.受信したデータはソケットごとに保持。
(a_fdで"HELLO"、b_fdで"SeeYou"、c_fdで"Hi"というデータを受信したら a_fd:HELLO b_fd:SeeYou c_fd:Hiという風に )
3.新しいデータを受信したら上書きする
(a_fdで"Bye"を受信したらHELLOを上書き)
4.各fdから1分間何も受信しなければそのfdのデータを削除する。
(a_fdから1分間受信しなければa_fd: b_fd: SeeYou c_fd:Hiとなる)

1~3までは作成できますが、4のアルゴリズムが分かりません。
selectのタイムアウトを1分にするのかと思いましたが、それだと各fdではなく全てのfdから1分間受信しなかった場合しか
判断できないですよね?
どのようにすれば各fdの時間を判断できますか?

よろしくお願いします。

188:デフォルトの名無しさん
11/03/27 01:04:06.59
各fd毎に最終受信時刻を記録しておき、selectに入る前にチェックする。

189:デフォルトの名無しさん
11/03/27 02:00:52.73
>>188
なるほど~
ありがとうございます。

190:デフォルトの名無しさん
11/03/27 13:56:27.64
今、Winsockの勉強でパケットキャプチャを作成しているのですが
パケットがどのアプリケーション宛に送られて来たものなのかを
特定する方法はあるのでしょうか?
よろしくお願いします。

191:デフォルトの名無しさん
11/03/27 14:33:41.81
>>190
「netstat -b」で「リッスン ポートの作成に使われた実行ファイルを表示」できる。
(手元のWindows 7で確認した)
これをパケットと付き合わせればよいかと。

192:デフォルトの名無しさん
11/03/27 14:56:25.99
>>191
こちらはXPですがその方法でやれそうです。
ありがとうございます。

193:デフォルトの名無しさん
11/03/27 15:35:19.92
おおっすげーと思ったが、
これ/etc/services参照してるだけだろw

194:デフォルトの名無しさん
11/03/27 16:22:43.45
ほほう、linuxだと netstat -p でできるようだ。
いいこと聞いたありがとう

195:デフォルトの名無しさん
11/03/27 16:48:45.76
>>168
そもそも
「v1 と v2c の実処理を行なう箇所を同じ処理で統一したい」を
「同じデータを取得」で実現するなら最小公倍数の項目で
やるしかないからこの場合は無理。だいいち
Enterprise=ベンダが勝手に定義して勝手に使うところだろ。
SNMPバージョンどころかベンダとか、最悪機器ごとに
処理変わるじゃん。アホか。

SNMPには落とし穴がいっぱいあるから
(例えば32ビット数は5バイトで表現されるから気をつけろ)
目的や対象機器を具体的にせまく絞って始めないと苦労するぞ。
大した目的がないならトライ&エラーで勝手にガンガレ

196:デフォルトの名無しさん
11/03/27 20:32:46.13
こんばんは。

ソケット、プロセス間通信でポインタを含む構造体を送受信したいのですが、どうやればいいですか?
ポインタをそのまま送るのはNGだと聞きましたが。。。


197:デフォルトの名無しさん
11/03/27 20:57:24.98
送り側がデータをftpサーバにアップして
受け取り側はftpサーバからダウンロードしたほうが簡単だと思う

198:デフォルトの名無しさん
11/03/27 21:01:46.73
>>196
> ポインタをそのまま送るのはNGだと聞きましたが。。。
同じアドレス空間で動いていないから、ポインターのさす先を別途送りつけるしかない
その先にポインターがあったらさらにもう一回… … …


199:196
11/03/27 21:06:19.64
>>197
ソケットを使うことが条件なので。。。

>>198
構造体をポインタがない構造体にしてから送るしかないですよね。。。
ありがとうございました。

200:196
11/03/27 21:25:36.74
>>198
何度もすいません。
構造体が線形リストの場合(データが何件あるかわからない場合)、
どのように展開すればいいですか?


201:デフォルトの名無しさん
11/03/27 21:29:01.45
最初にデータの件数を数えてその個数を送るか
1件送るたびに次がまだあるか無いかを示すフラグを送るか

202:196
11/03/27 21:30:50.90
>>201
なるほど。。。すごいなぁ。
ありがとうございました。助かります

203:デフォルトの名無しさん
11/03/27 21:31:14.54
やっぱりftpで送ったほうがいいと思う
(まだわかんねえかな~)

204:デフォルトの名無しさん
11/03/27 21:33:28.76
ポインタ受け取ったら実体を要求すればいい。

205:196
11/03/27 21:39:35.27
>>203
すいません。
ftpで送るってどういうことですか?
ソケットとは違いますよね?

206:デフォルトの名無しさん
11/03/28 06:35:07.15
ソケットは手段
ftpは通信規約

207:デフォルトの名無しさん
11/03/28 14:06:31.93
>>195
レス、hx

言われることはもっともなんだけれど、そういう風に要求されてしまったので可能なのだろうかと調べていたところで。
数値の扱いなども言われるとおりでちょっと苦戦していました。
※その後、もともとのプログラムが v2c に対応していないことが判明しました。w

もうちょっとがんばってみるです。
ありがとうございました。

208:デフォルトの名無しさん
11/03/28 17:37:16.69
SNMP廻り全部自前で書くの?
結構難しいよ。ただただ面倒だし。
出回っているライブラリーのソース読めば
その辺のことは大体分かると思う。

209:デフォルトの名無しさん
11/03/29 22:10:44.64
ポインタを含むデータ構造通信の件、おいら大好物。
ゆっくりでよければ教えるよ

問題なのは、最近のOSではメモリが確保される具体アドレスは
マシンごとに違うから、単にメモリアドレス値を渡しても
普通うまくいかんっつーことだな。

レアなやりかたで、メモリが確保されるアドレスをそろえてしまう
ってのもある。

オイラが好きなのは、データパケットの先頭をゼロとして
ポインタ値をオフセット値に変換して通信、
受信側はオフセットをポインタ値に戻す、ってやつ。

"シリアライズ"で検索するといろいろでるよ。
あと、.Net等で同一マシン内の違う言語で構造体データ渡すのにも
似たテクを使うんだが、それは検索キーワード"マーシャリング"だ

210:デフォルトの名無しさん
11/03/29 22:37:03.78
> レアなやりかたで、メモリが確保されるアドレスをそろえてしまう
どうやって?
相手のマシンが同じアーキテクチャである保証はない
ましてや同じOSである保証はさらにない

> データパケットの先頭をゼロとして
> ポインタ値をオフセット値に変換して通信、
同一オブジェクトへのオフセットは, 当然, 考慮されてるんだよな
こっちでは a -> x, b -> x
あっちでは a -> x, b -> y
だったら洒落にならないんだが…


211:デフォルトの名無しさん
11/03/29 22:51:14.57
すまん、根本の話がすっとんでた。順番に書くと

(1)マシンが別ならメモリアドレス値は別になるから
アドレス値渡しても意味無し。
(2)マシンAでポインタを含むデータ構造を持ってて、
それをマシンBで再現できればいいのであって、
具体的なアドレスは変わっててもいい。
(3)マシンAにてパケットで表現できる形式に変換して、
マシンBに渡して、マシンBでメモリ上に再現する
てのが基本。
(4)パケット表現は、テキストやバイナリがある。
テキストで有名なのはXML、JSON。
バイナリも古くからいろいろあって、
固定長好き派の
NDR(IBM HP MSのRPC)やら
XDR(Sun RPC)やら、
タグ・長さ・値 派のBER(SNMP)やら。

あと、いろいろ環境ツールも含めて
GoogleのProtocol Buffersやら
FacebookのThriftやら
MessagePackやら
もある。

俺が言った、「アドレス値をオフセットに~」っていうのは
バイナリパケット形式の、独自方式を自分で実装する
って話。
201は多分べつの物知りさんだな、
いまocn規制できつい、ゆっくり頼むが
同一の固定OSでないと固定addrは無理だろ

212:デフォルトの名無しさん
11/03/30 00:20:45.86
浅い話を長々書くな

213:デフォルトの名無しさん
11/03/30 10:07:58.23
>>211
> ポインタを含むデータ構造通信の件、おいら大好物。
> ゆっくりでよければ教えるよ
と宣言したんだから、>>200も考慮してきっちり教えてやれ。w

214:デフォルトの名無しさん
11/03/30 14:01:33.18
なんかフォールトレランスシステムで、同じシステム上で同じアプリが複数動いてるのを前提にしてそうな環境だな。

お互いにポインタで参照し合って相互に確認しながら、動作するプログラムが組めそう。

215:デフォルトの名無しさん
11/03/30 15:10:11.16
インデックスなら

216:デフォルトの名無しさん
11/03/30 16:47:20.77
ちょっと質問いいですか。
ここの掲示板でURLリンク(aurasoul.mb2.jp)書き込むと名前の横にIDが自動的につくのですが、
このIDを変える事はできませんか?プロバイダーが変わっても串を刺してもクッキー消しても変えられない。手軽に変える方法は無いですか?


217:デフォルトの名無しさん
11/03/30 19:22:16.64
             ,. ' ´  ̄ ̄ ̄ ̄ ̄ `ヽ、
           /    /          \    
          /     /             \
         /     /―――――イノ
         /     /: : : : : : : : : : : :| |
        ,'    ,∠ __________/ |
        |   <__:.:.イ:.`メ、/|:/ |:./\レ:.:.〈 |
        ノ!     |/リレ',ィrそド"´ レ ィチxV:.!:.V}
       /|    /!:.:.! 〈. トzリ     トzリ }:!::Nリ
     /     /ソ:.:.i xx`¨´    , `¨x{:从 }
    /      //|:.:.込、         /:.|.ハ∧    なんかわたし
    /     /厶|:.:.|\ ヽ、  r つ ,. く:.:.:! ∧ ヽ      呼ばれた気がするんだよ?
   /    /    |:.:.|::::::> ミ  、 <}  |::.:|   ヽ. }
  /i   〃     レ‐‐く\   ̄´ /::!  !:.:<フ二ヽリ
./   //     / /⌒く:\  イ:::::|  |:. 厶--、 }
   / /     (   /,. ┤:::::ヽ /::::::|  |:.厶--、 /

218:デフォルトの名無しさん
11/03/31 00:24:27.59
どんなパケット形式を使うにしても、
(a)循環参照をどうするのか
(b)同一値のエントリが2個以上あるのか
とか、
そのシステムではどうなのかちゃんと
調べて設計の前提条件にしないとダメよ。

ーーーー
リンクリストは後にして、まず文字列のポインタで例だそう。

1エントリに
固定長サイズの部分と可変長サイズの部分があるとするだろ。

struct Hoge {
 uint32_t num1;
 uint32_t num2;
 char *str1;
 char *str2;
}
したら、俺ならこの1エントリに対して例えば

219:デフォルトの名無しさん
11/03/31 00:26:08.56

|----+----+----+----|
|entrySize-------| //パケット独自項目
|num1------------| //ここから固定長部分
|num2------------|
|str1Offset------| //データとパケットで違う項目
|str2Offset------| //データとパケットで違う項目
|str1の中身........| //ここから可変長部分
|.....文字列おわりnull|
|str2の中身........|
|.....文字列おわりnull、4バイト切りいいところまでnull|
とかの形でパケット化するんだわ。

受信側は、
entrySize分のメモリを用意して、
num1~str2の中身をコピーして、
str1Offsetとstr2Offsetの値を書き換えてやれば
struct Hoge のできあがりと。

これは例だからもちろん他のやりかたでもよし。

220:デフォルトの名無しさん
11/03/31 00:28:53.06
で、循環参照や重複エントリはないシステムだとして、
双方向リンクリストだったら、
エントリ->前,次 と書くとして

e1 -> null, e2
e2 -> e1, e3
e3 -> e2, null
をパケットで表現したければ、パケットにはアタマから

ヘッダ(エントリ個数3、とか)
e1
e2
e3

とならべる。
それぞれのポインタを指すフィールドには、パケット先頭からの
e1,e2,e3先頭のオフセットを格納しておけばよい。
ヘッダがあるからnull値と先頭エントリの区別はつく。

つたわるかな?

221:デフォルトの名無しさん
11/03/31 00:29:27.02
>>219
offsetって何?

222:デフォルトの名無しさん
11/03/31 00:37:22.68
offset くらいググろうよ(;-;)
昨日の書き込み見てもわからん?

どんなシステムでも使えてかつ高速な、夢の方法はない。
どんなシステムでも使いたきゃ
実行コスト払ってXMLなりJSON使う。

[アドレス固定]の話は...man shmat 参照。
でも使える場面はかなり限定されるよ。



223:デフォルトの名無しさん
11/03/31 00:41:36.98
>>222
ごめん、質問が悪かった。offsetを何に使うのか。
データさえわかってしまえば、送り先のメモリアドレスな
んて必要ないと思っただけ(offsetってそういう意味じゃない?)。
json,xmlならそんなことしないから使い道が気になっただけ。

224:デフォルトの名無しさん
11/03/31 00:42:51.63
ごめ、「送り元」のアドレスだったorz

225:デフォルトの名無しさん
11/03/31 00:42:56.74
循環やら重複エントリを扱いたかったら、まずはその元データについて
全エントリを重複無くたどるアルゴリスムを考えてみれ。
ソコまでできればあとは楽勝だろ。

226:デフォルトの名無しさん
11/03/31 00:52:36.29
受信したマシン上で、struct Hoge を再現するんだろ。パケットではoffset を入れてるところに、受信マシンがアドレス値を上書きして、struct Hoge * として読むんだよ。
C言語はわかってるんだよな?

227:デフォルトの名無しさん
11/03/31 01:00:19.13
あああ、疑問点わかった。
ウム、文字列途中にnull が入らないことが確定なら確かに値だけでも
問題なく伝わるね。
それでもイイヨ。受信データと再現データを完全に別にするなら。

228:デフォルトの名無しさん
11/03/31 01:09:57.65
あああ、意味分かった。
num1からstr2をまるごとコピーして、各offsetに
コピーしたstr1, str2のアドレスいれれば再現可能って訳ね。
で、可変の場合は各エントリのoffsetをたどって同じこと
繰り返す、と。失礼した。

229:デフォルトの名無しさん
11/03/31 10:28:01.02
教えてください。

linux の snmptrap や snmpinform などのコマンドで、data binding 部のデータの型を
i:整数、s:文字列 みたいに指定するのだけど、Opeque や NsapAddress を指定することは可能でしょうか。

↓コマンドで指定できる型を参考にした場所(表3)
URLリンク(www.itmedia.co.jp)

↓snmp で指定できる tag の型を参考にした場所(表2)
URLリンク(www.netwatcher.jp)


あと、inform は要求を受信した後に返す応答の送信先は
要求を送信してきた側の IP アドレスとポート番号でいいのでしょうか。
snmpinform で要求を投げて、以下の場所に返してみたのだけどタイムアウトになってしまいます。
・受信したUDPソケット (当然?送信できずににエラーとなる)
・新規に作成したUDPソケットで要求を送信してきた側の IP アドレスとポート番号
・新規に作成したUDPソケットで要求を送信してきた側の IP アドレスとSNMPの既定ポート(162)

お願いします。


230:デフォルトの名無しさん
11/03/31 10:39:19.10
net-snmpの場合、usage:にOpaqueで扱える型が出力される。
NETSNMP_WITH_OPAQUE_SPECIAL_TYPES定義でコンパイルされていれば。


231:デフォルトの名無しさん
11/03/31 13:01:53.84
>>230
ありがとうございます。
usage に見当たらないので、、、残念。


inform の返信先についても、分かる方がいらっしゃったら教えてください。

232:デフォルトの名無しさん
11/04/12 22:48:34.55
WinSockでUDPのプログラムを組んでるんですけど、
ポートはbindしてて、INADDR_ANYでsendtoしたときに、
実際にrecvする側で送信元として受け取るアドレスは、
送信元のどのアドレスなのでしょう?
「どの」っていうのは、送信元のマシンにはエイリアスで
アドレスが複数追加されているので・・・

INADDR_ANYで送信するときって、送信元として入るアドレス選択に
きまりはあるのでしょうか?

233:デフォルトの名無しさん
11/04/12 22:53:17.51
bindしてれば、そのアドレス
してなければ、出て行ったインターフェースのアドレス

ただWinSockはいろいろ斜めを行くから…

234:デフォルトの名無しさん
11/04/13 12:32:56.36
>>232
>INADDR_ANYで送信するときって、送信元として入るアドレス選択に
>きまりはあるのでしょうか?

ホストのルーティングテーブルでネクストポップを決定して、
そのネクストポップと同じサブネットのアドレス。

>>233
>してなければ、出て行ったインタフェースのアドレス

232が聞いてるのは一つのインターフェイスに複数のIPアドレス振ってる時の話でしょ。

235:デフォルトの名無しさん
11/04/13 12:38:44.84
同じNICに二つのIPアドレス振ってるときは
出て行くのはプライマリのIPアドレスからになる


236:デフォルトの名無しさん
11/04/13 18:19:07.72
>>235
んなわけあるかい。
「プライマリの」なんて概念が前時代的。

237:232
11/04/14 00:35:43.37
>>233-235
ありがとうございます。
>>234さんの指摘のように、1つのインタフェースに複数のアドレスが定義されている場合です。

>>234
> ホストのルーティングテーブルでネクストポップを決定して、
> そのネクストポップと同じサブネットのアドレス。

浅学ですみません。。。定義した複数アドレスが、同一ネットワークの場合はどうなるでしょうか?
基本的な質問で恐縮なのですが、なぜこういう質問をしているか、
>>232の話をもう少し具体的に言うと

① サーバ    : アドレス 192.168.0.20/24 さらに同じNICに対して、エイリアスで 192.168.0.1/24 を定義している
② クライアント : アドレス 192.168.0.10/24

この状態で①→②へ送信します。送信方法は>>232に書いたように、UDPで、ポートは固定で指定、
ホストアドレスは INADDR_ANY で作ってバインドしてあります。
①でsendtoして②でrecvfromしたとき、②で受信したときの送信元(①)のアドレスがどうなるか?なのです。
というのも、①が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へ持っていくと動作が変わるので、
これをなんとかしたい、というのが背景です。

238:デフォルトの名無しさん
11/04/14 06:30:29.12
INADDR_ANYをやめる

239:デフォルトの名無しさん
11/04/14 15:29:36.22
Linuxのソケットで
まだreadしてないたまっているバッファをすべて破棄するには
どうするのが一番スマートで速くて格好いいデスか?

240:デフォルトの名無しさん
11/04/14 15:43:31.87
select, readループ

241:デフォルトの名無しさん
11/04/14 15:53:11.93
>>240
空読みが許されるのは童貞までだよねー

242:232
11/04/14 18:19:21.77
自己解決しました。

結論から言うと、OSの仕様でした。(無印Win7しか確認していませんが)
URLリンク(support.microsoft.com)

↑のKBの修正Hotfixを当ててから、
netsh で skipassource=true にしてエイリアスのIPアドレスを
同一NICに追加してやると、プライマリ相当のアドレスで返ってくるようになりました。
またこのとき、route print すると Gateway と Interface がプライマリ相当のアドレスになることが確認できました。

>>236さんの言うようにプライマリという概念がそもそもなくなってるともいえますし、
OSの動作が、XP/2003Server → Win7/2008R2 で変わったともいえると思います。
まあプログラム側がOSの仕様を決め打ちした動きになってるのが悪いんですが・・・w

とりあえずOSのアップデートか、>>238さんの言うようにプログラム側で対処するか、
どちらかで検討します。
お騒がせしました。

243:デフォルトの名無しさん
11/04/14 19:55:54.78
くっそ
ソケットに対してlseekするとエラーになるんじゃん!

244:デフォルトの名無しさん
11/04/14 19:59:14.69
いやいやいやいや
常識的に考えて出来るはずなかろう?

245:デフォルトの名無しさん
11/04/14 20:01:50.14
向こうが shutdown で閉じてれば あるいわ… ってTCP限定の話になっちゃうか

soket 閉じて開きなおすのはマズイのだろうか と戯言

246:デフォルトの名無しさん
11/04/14 21:36:35.72
shutdownマナーはFAQです。よく読んでください。

247:デフォルトの名無しさん
11/04/14 21:43:05.47
>>244
lseek を実装して、現在あるバッファを読み飛ばす(捨てる)だけは可
にすればいいんだがまぁ、対称性に著しく書けるインターフェースだわな


248:196
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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch