トップページ⇒tech
1001コメント292KB

ネットワークプログラミング相談室 Port15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/09/30(金) 22:54:08
主にソケットに関しての質疑応答スレです。

Programming 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辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port14
http://pc8.2ch.net/test/read.cgi/tech/1118469143/
0263デフォルトの名無しさん2005/10/29(土) 01:37:00
>>262
どっちも同じ意味。
0264デフォルトの名無しさん2005/10/29(土) 02:58:48
>>260
要するにMT-Safeでないということだね。

マニュアル文章としては良くないね。
「並列に実行するな」と書けば済むことを、グダグダ書いてある。
# というか「not MT-Safe」、これだけで済むこと。
0265デフォルトの名無しさん2005/10/29(土) 03:04:56
WSAAsync...系のAPIをマルチスレッドで呼び出す??
メッセージループを動かしているスレッド以外で、使う事あるの?
0266デフォルトの名無しさん2005/10/29(土) 03:11:16
ちなみに、MSDNのWinsock2の説明では
別スレッドでなんかした時にどうなるとかは、ちゃんと「thread」という単語を使って解説されています。
0267デフォルトの名無しさん2005/10/29(土) 03:15:22
>>264は根本的な勘違いをしている希ガス……。
そもそもこれは、スレッドセーフなどの問題ではないような……。


最初に、名前解決できないホスト名を渡す。
↓
次に、名前解決できるホスト名を渡す。
↓
メッセージが飛んでくるのを待つ
↓
しばらくたってから、最初の名前解決ができなかった旨を示すメッセージが飛んでくる。
↓
名前解決できた、次のメッセージが飛んでくる。


もし並列に実行できるなら、こうなるはず

メッセージが飛んでくるのを待つ
↓
二番目に渡したホスト名の、名前解決ができたことを伝えるメッセージが飛んでくる
↓
タイムアウトになって、最初のホスト名が名前解決ができなかったことを示すメッセージが飛んでくる。
0268デフォルトの名無しさん2005/10/29(土) 03:25:32
てゆーか、そもそも、
排他処理等を行って「1つのスレッド以外は待たされる」というものはいくらでもあるが
そういうのを「非MT-Safe」とは言わないのだが。
0269デフォルトの名無しさん2005/10/29(土) 09:14:47
そ。MT-Safeかどうかと
並行実行時の効率の良し悪しはまったく別の話
0270デフォルトの名無しさん2005/10/29(土) 09:52:06
>>263
LPCTSTRは CONST TCHAR* でLPTSTRは TCHAR* なのですが・・・
入力パラメータなのにconstが付いてないのはおかしいと思うのです。
0271デフォルトの名無しさん2005/10/29(土) 10:29:58
constがついてないということは それは変更されるかも知れないというだけ
おかしいのは>>263と>>270でFA
0272デフォルトの名無しさん2005/10/29(土) 10:37:56
std::stringやCStringを直接渡せないな。
一時バッファ作らなきゃならんのか。マンドクセ('A`)
0273デフォルトの名無しさん2005/10/29(土) 11:15:40
絶対この関数を使わなきゃならんのか?
0274デフォルトの名無しさん2005/10/29(土) 16:34:58
getaddrinfoもWSAStringToAddressも名前が解決できるまでブロックするみたいだけど
WinsockでIPv6アドレスの解決中にブロックを中断したいときはどうしたらいいの?
UNIXならシグナルが使えそうだけど
0275デフォルトの名無しさん2005/10/29(土) 18:58:25
>>274
>名前が解決できるまでブロックする
これマジっすか
確かにブロックするかも
まずいなぁ・・・まずいよ
0276デフォルトの名無しさん2005/10/29(土) 19:18:22
スレッドで実行させればいいじゃん。
0277デフォルトの名無しさん2005/10/29(土) 19:29:39
>>274
WSAStringToAddressって単なる文字列処理じゃないの?
0278デフォルトの名無しさん2005/10/29(土) 19:41:14
>>276
名前解決でブロック中のスレッドを外から止められないのは一緒でしょ
TerminateThreadは後始末してくれないからサーバーアプリには使えない
クライアントなら終了すればいいけど
0279デフォルトの名無しさん2005/10/29(土) 20:23:54
>>277
そのようだ。ボケてた。getaddrinfoだけに置き換えて読んでちょ
0280デフォルトの名無しさん2005/10/29(土) 20:50:30
GET "〜〜"を送信してファイルをディスクに保存するとします。

その何も加工されていないファイルには、例外無くヘッダ情報が含まれますよね。
そのヘッダ情報を削除したい場合、どのようなプログラミングの手法が取れるでしょうか?
自分はヘッダに含まれるLengthを調べて、ヘッダファイルを取り除いていたのですが。
Lengthが存在しない場合などの時には、ヘッダが削除できなくなってしまいます。
0281デフォルトの名無しさん2005/10/29(土) 21:16:54
CR LF CR LFが来るまでがヘッダ。
0282デフォルトの名無しさん2005/10/29(土) 21:26:58
えっと今バイナリエディッタで、ヘッダ情報を含むページを見てるのですが。
CR LF CR LFという文字列が見つからないのですが・・
0283デフォルトの名無しさん2005/10/29(土) 21:45:51
>>282
がんばれ
視点を変えればすぐに見つかる

バイナリエディタで検索せずに、自分の目で見るんだ
0284まあ、釣りだろうな。2005/10/29(土) 21:49:24
>>282
申し訳ないけど、君、技術者に向いてないよ。

100歩譲って CR LF とか知らないのは、しょうがない
としても、例えば html cr lf ぐらいでぐぐってみる
とか、本屋に行って HTML 関係の本を片っ端から立ち読
みするとかできないようだと、これから辛いよ。
0285デフォルトの名無しさん2005/10/29(土) 21:52:39
↓お前はこれから奴にRFC読めと言う
0286デフォルトの名無しさん2005/10/29(土) 22:04:08
空気読めればそれでいいじゃん
0287デフォルトの名無しさん2005/10/29(土) 22:13:45
CR=キャリッジリターン。ANSIコード0x0d
LE=ラインフィード。ANSIコード0x0a
0288デフォルトの名無しさん2005/10/29(土) 22:22:55

わざわざすみません
0289デフォルトの名無しさん2005/10/29(土) 22:58:01
ブラウザで拾った(既にヘッダが取り除かれた)html見てるんじゃないだろうな?
0290デフォルトの名無しさん2005/10/29(土) 23:00:16
えっと今バイナリエディッタで、HTML情報を含むページを見てるのですが。
RFCという文字列が見つからないのですが・・
0291デフォルトの名無しさん2005/10/29(土) 23:02:35
>>290
>>284 の名前欄。
0292デフォルトの名無しさん2005/10/29(土) 23:07:44
RFC資料へのリンク集らしい
ttp://www.se.hiroshima-u.ac.jp/~isaki/rfc/list.html
0293デフォルトの名無しさん2005/10/29(土) 23:44:41
RFC資料へのリンク集
ttp://www.asahi-net.or.jp/~PM5M-ON/it/net/rfcjp/1/index.htm
0294デフォルトの名無しさん2005/10/30(日) 03:11:17
RFCも知らないプログラマ…
温室育ちかな?
0295デフォルトの名無しさん2005/10/30(日) 03:28:38
>>294
君も>>284の名前欄
0296デフォルトの名無しさん2005/10/30(日) 08:22:48
釣りかどうかは別として
たまに基礎が欠落している人がいるわけだが
そういう奴らがどこから情報を得ているのか気になるよな
0297デフォルトの名無しさん2005/10/30(日) 10:49:09
ドカチンプログラマーには、たいした情報いらんだろ。
0298デフォルトの名無しさん2005/10/30(日) 14:49:54
localhostのMACアドレスを取得するには
どのようなコードを書いたら良いでしょうか?
0299デフォルトの名無しさん2005/10/30(日) 14:51:17
127.0.0.1にMAC層なんてあるのですか?
0300デフォルトの名無しさん2005/10/30(日) 14:58:31
きっと、自分のコンピュータから手に入れたいってことだろう。
0301デフォルトの名無しさん2005/10/30(日) 21:34:28
LANカードじゃね?
0302デフォルトの名無しさん2005/10/30(日) 22:19:16
127.0.0.1 に LAN カードなんてあるのですか?
0303デフォルトの名無しさん2005/10/31(月) 01:21:28
>296
0304デフォルトの名無しさん2005/10/31(月) 02:57:53
でもさ、俺らだって本当の基礎はあんま理解してないじゃん?
IPパケット読めって言われたって、本見ながらアーとかウーとか
唸りながらじゃないと宛先ひとつ取り出せないじゃん?
LANの信号って何ボルトだったっけ?
0305デフォルトの名無しさん2005/10/31(月) 08:12:20
俺ら…
0306デフォルトの名無しさん2005/10/31(月) 08:28:40
0V.
光ケーブルに電気は流れないよ。
0307デフォルトの名無しさん2005/10/31(月) 08:42:26
>>304
大学へいけ。ちゃんと教えてくれるから。
0308デフォルトの名無しさん2005/10/31(月) 12:46:37
>>298
Windowsならレジストリから読む
UNIXなら・・・しらんLinuxなら/procとかそこらへんじゃねーの
0309デフォルトの名無しさん2005/10/31(月) 14:13:44
WindowsはlocalhostにMACアドレスなんかついてるのか? けったいな。

0310デフォルトの名無しさん2005/10/31(月) 23:00:26
やっぱりこのスレにネットワーク分かる人いないんですね。
ネットワーク知ってると言ってWindowsだけだとお話になりませんよ。
0311デフォルトの名無しさん2005/10/31(月) 23:17:05
Windows以外だとlocalhostにMACアドレスがついているのですか?
298=300=310さん。
0312デフォルトの名無しさん2005/10/31(月) 23:17:54
電撃ネットワークも知ってるお。
0313デフォルトの名無しさん2005/10/31(月) 23:19:48
TMネッt(ry
0314デフォルトの名無しさん2005/10/31(月) 23:27:20
平和より自由より正しさより〜
0315デフォルトの名無しさん2005/10/31(月) 23:34:19
あむうえ
0316デフォルトの名無しさん2005/10/31(月) 23:40:50
>>311
付いてるよ。普通に。
キサマはWebアプリしか作ったことないだろ?
ヘタレだな。
0317デフォルトの名無しさん2005/11/01(火) 00:00:11
loなifにmacなんて付いてるの? 初めて知った…。
0318デフォルトの名無しさん2005/11/01(火) 00:07:40
>>316=310=300=298のネットワークに詳しい有能な技術者様へ

NICを持ってないPCでも、localhostを持っていて
127.0.0.1相手に通信できるなんて、そんなわけないもんね。

ネットワークに詳しくないヘタレは、↑みたいな勘違いしてるから
localhostがMAC持ってるなんて知らないんだよ。
0319デフォルトの名無しさん2005/11/01(火) 00:12:31
>>318
書いてることがよくわからない。も少し分かりやすくお願い。
0320デフォルトの名無しさん2005/11/01(火) 00:22:31
よくわからんが、
localhostからって言ってるから、
ここ数年流行のTomcatでlocalhost相手に
Webアプリを作ったことあるだけのネットワーク知った気取りが
ループバックに噛みついてんじゃないの?
自分のパソコンの って言えばいいじゃん。
0321デフォルトの名無しさん2005/11/01(火) 00:24:12
そんなメソッドはありません。
って言い出すんだろ。どうせ。
0322デフォルトの名無しさん2005/11/01(火) 00:24:52
>>319
>>310
0323デフォルトの名無しさん2005/11/01(火) 00:28:01
>>322
ネットワークスレらしく、パケット解析してから発言してるのか?
0324デフォルトの名無しさん2005/11/01(火) 00:29:35
>>322
まったくよくわからん。結局このスレじゃ答えは出ないってことか?

まぁloがmac持ってようがいまいが仕事するのに影響ないからいいか。
0325デフォルトの名無しさん2005/11/01(火) 00:31:52
なにここ。
これほどあからさまな皮肉を、皮肉と感じられない人しか居ないの?
0326デフォルトの名無しさん2005/11/01(火) 00:33:55
ヒント:ARP
0327デフォルトの名無しさん2005/11/01(火) 00:48:37
localhostにMACアドレスがついてる一族は別の世界の住人なんだろう。
どっか他所でやってくれ。たいして面白い見世物でもなかったので飽きた。
0328デフォルトの名無しさん2005/11/01(火) 00:52:10
うちのMacのMACアドレスはどうやって調べたら良いんだ?
0329デフォルトの名無しさん2005/11/01(火) 00:57:10
郵便番号から検索できるぞ
0330デフォルトの名無しさん2005/11/01(火) 01:03:44
自分のパソコンのMACアドレスだったらどうなんだ?
0331デフォルトの名無しさん2005/11/01(火) 01:04:05
最近は電話番号からでも住所調べられる世の中になったんだってな?
0332デフォルトの名無しさん2005/11/01(火) 01:16:19
2chもレス番からでも住所調べられる世の中になったんだってな?
0333デフォルトの名無しさん2005/11/01(火) 01:20:08
ダイアルアップルータによってインターネットに接続しているLANがあるとします。
このLANの上には複数PCがあるとし、そのうちの一台からHTTPの要求をWebサーバに送信します。
Webサーバが返した応答はルータを介してHTTPを投げたPCに返しますよね。
このときルータがその経路を覚えていてくれることはTCPの働きによって
(例えば、TCPが内部でEthernetのパケットを絶えずやり取りして経路を失わせないとか)
保障されているのですか?
つまりTCPのコネクションとは何によって確立しているのでしょう?
0334デフォルトの名無しさん2005/11/01(火) 01:25:55
断片的な知識を勝手に繋ぎ合わせて奇妙奇天烈な理解をしてそうな奴が来たな。
TCPのコネクションと経路は関係ない。

0335デフォルトの名無しさん2005/11/01(火) 01:32:43
>>333
TCP/IPスタック

簡単に言うとメモリにIPテーブルを保存している
0336デフォルトの名無しさん2005/11/01(火) 01:39:11
>>333
TCPコネクションとは、接続元と接続先によって確率されてます。はい。
0337デフォルトの名無しさん2005/11/01(火) 01:52:25
では経路はどのように保たれるのですか?
0338デフォルトの名無しさん2005/11/01(火) 01:58:10
ヒント:ARP
0339デフォルトの名無しさん2005/11/01(火) 01:59:09
>>337
ルーティングテーブル

tracertというコマンドがあるから
コマンドプロンプトかシェルでためしてみるとイメージがわかるだろう。

ルーターやFWがICMPをブロックしてるなら使えんが
0340デフォルトの名無しさん2005/11/01(火) 02:04:21
するとUDPでも絶えず流していれば経路は保たれるのでしょうか?

0341デフォルトの名無しさん2005/11/01(火) 02:08:16
人の話を全然聞いてねーなこいつ。
0342デフォルトの名無しさん2005/11/01(火) 02:08:19
保障はないが保たれる
0343デフォルトの名無しさん2005/11/01(火) 02:12:13
TCPとUDPについて入門書で勉強したほうがよくない?
今はネットにも情報転がってるしさ。ここで答え出るの待ってたら
時間浪費なだけだよ。



釣りとは思ってるけどさ。
0344デフォルトの名無しさん2005/11/01(火) 02:13:10
>>342
保障が無いけど保たれるというのは、どういうことでしょう?
ある時そのルーティングテーブルをルータがリセットしちゃったらもう届かなくなる。
そしてルータはそういうことをしてはいけないというルールは無い、とか?
0345デフォルトの名無しさん2005/11/01(火) 02:33:07
保証を保障と各
0346デフォルトの名無しさん2005/11/01(火) 02:33:33
IP層のルーティングと、
NATの接続管理を混同している。

ちなみに「自ホストのMACアドレスうんぬん」、Windowsなら>>1
UNIXならstevensでも読んでね。
0347デフォルトの名無しさん2005/11/01(火) 10:04:48
>257-259
遅レスだが、偽ARP送れば大抵のスイッチ、OSの組み合わせで、
通信覗き見るのは可能だろ。
ARP poisoning防げるOSなんてあるの?
全ポート802.1xならスイッチで防げると思うけど。
0348デフォルトの名無しさん2005/11/01(火) 10:29:02
>>347
今時のOSなら故意か偶然かIPアドレスが衝突したことくらいはわかる。
メッセージ出るよ。
0349デフォルトの名無しさん2005/11/01(火) 13:08:03
>>348
IPアドレスの衝突は関係ないだろ。
ターゲットとなる2つのホストに、第3者が、それぞれ他方を偽るARPを送るだけだから。
0350デフォルトの名無しさん2005/11/01(火) 15:45:06
ttp://msdn.microsoft.com/library/en-us/winsock/winsock/graceful_shutdown_linger_options_and_socket_closure_2.asp
の
>(local timing significance only)
とはどういう意味でしょうか。
「ローカルタイミングの意味のみ??」どう訳せばいいのかわかりません、、
0351デフォルトの名無しさん2005/11/01(火) 16:15:16
>>350
ローカル側でのタイミングのみ意味がある
=リモート側の処理のタイミングとは無関係

という意味では?

つまり、Client side の場合、
(1) と (5) の間にこの処理が発生するけれども、
(2),(3),(4)の処理のタイミングとは無関係、という意味。
0352デフォルトの名無しさん2005/11/01(火) 16:30:42
>>351
ああなるほど、納得しました。
ありがとうございました。
0353デフォルトの名無しさん2005/11/01(火) 23:12:01
>>350
タイミングw
NICチーミングの話だよ。
0354デフォルトの名無しさん2005/11/02(水) 00:16:03
>>349
その arp をいつ送るかを考えてごらん。
0355デフォルトの名無しさん2005/11/02(水) 00:27:46
>>349
IT用語辞典並の知識しかなさそうに見えるぞ。
ARPというプロトコルについて勉強したまえ。
0356デフォルトの名無しさん2005/11/02(水) 01:43:21
>>355
その考えだと、すべての技術の詳細を厳密に把握してないと
設計できないことになるね。
少なくとも、よい設計者は君のようなことは言わない。
0357デフォルトの名無しさん2005/11/02(水) 01:43:50
>>354-355
念のため聞きたいんだが、ARP Poisoning Attack については理解してるんだよね?
どうみてもわかってないのはそっちの方にしか見えないんだが。
0358デフォルトの名無しさん2005/11/02(水) 01:46:43
念のため聞きたいんだが、
お ま え ら た だ の 土 管 屋 ?
0359デフォルトの名無しさん2005/11/02(水) 01:48:57
>>353
NICチーミングって、俺は NIC Teaming のことしか知らないんだが、他にもあるの?
0360デフォルトの名無しさん2005/11/02(水) 01:59:49
今日はarpかよ。
0361デフォルトの名無しさん2005/11/02(水) 02:13:59
この調子だと明日はpingだな。
0362デフォルトの名無しさん2005/11/02(水) 02:16:10
頭大丈夫か?
■ このスレッドは過去ログ倉庫に格納されています