ネットワークプログラミング相談室 Port24
■ このスレッドは過去ログ倉庫に格納されています
0001lmtp
2009/07/07(火) 00:46:28Programming 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辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port23
http://pc12.2ch.net/test/read.cgi/tech/1230466044/
関連スレ
ネットワークプログラミング雑談
http://pc12.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://pc11.2ch.net/test/read.cgi/tech/1086238859/
0116デフォルトの名無しさん
2009/07/24(金) 15:57:091536byteくらい?
0117デフォルトの名無しさん
2009/07/24(金) 16:45:21今のところはチマチマ考えず、ドッカーンと確保すればいい。
たとえば想定される「最大メッセージ長 * 2」を数kbyte単位で切り捨て。
4kbyte(4096byte)くらい用意しておけばいいんじゃね。
今回のは実験、演習、あるいはホビーのプログラミングなんでそ?
0118デフォルトの名無しさん
2009/07/24(金) 17:55:14おそらくネトゲを作ってるんだろうからブロッキングでは済まないんだと思われるよ。
0119デフォルトの名無しさん
2009/07/24(金) 19:23:59んー、確かにLAN内なら無問題だけど、Internet環境だと
パケット遅延があるから、>>115の方法だと、
1行を組立てる間に数百msのブロックが発生する可能性があるね。
格ゲーだったら大問題になる。
ただ、今はまずプログラムを「論理的に正しく動かす」ことが先じゃないかと。
想定される問題は忘れないように検討課題としてメモしてブロッキングの話は
(今は)置いておき、どんどん前進すべきじゃないかと思う。
後から(C標準ライブラリに代わる)非ブロッキング入力対応の論理に変更するのは、
状態「初期/組み立て中/完了」を持つステートマシンを設計すれば(設計できれば)
比較的容易に実装できるだろうし。(>>113の言うFIFOバッファの実装の事ね)
たぶん、ネトゲなら1プロセス内で各プレーヤを疑似マルチタスク
(今時の言葉ではファイバー(?))として実装させることになると思うから、
その時一緒に。
もちろんマルチスレッド構成で実装するのなら、各スレッドはブロックされても
かまわないわけだし。
0120デフォルトの名無しさん
2009/07/24(金) 21:32:19失念してました。
.NET Frameworkの非同期ソケットを使ってます。
0121115
2009/07/24(金) 23:10:29勝手にC言語だと思い込んでいました。あぁ恥ずかしや....。
こちらこそ失礼しました。
.NETは知識がありませんが、ソケットからデータを読み込み、
もし改行コードがあれば(1行分の組み立てが完了したなら)、
それを解読してメッセージ受信というイベントを
(プレーヤの?)タスクへ通知するという基本的な考え方は共通だと思います。
後は他の人にまかせて、漏れは落ちます。デハ、サラバ
0122デフォルトの名無しさん
2009/07/24(金) 23:42:56>>82
少なくともACKが入ってないと破棄対象になる。
0123デフォルトの名無しさん
2009/07/25(土) 00:52:01FINとかACKのパケット大量に送りつけるだけで沈黙しそうだが。
0124デフォルトの名無しさん
2009/07/28(火) 17:58:30UDPで大きなデータグラムが送られてくるとき、
recvfrom側では分割受信することはできないのでしょうか?
たとえば、3000バイトのデータグラムを受信するのに、
100バイトのバッファで全データを受信したいのですが
GetLastError()では234(0xea データがさらにあります。 )となってしまい、
続けてrecvfromを行うとブロックしてしまいます。
0125デフォルトの名無しさん
2009/07/28(火) 18:03:27全体を格納できるバッファを用意するしかない。
はみでた分は捨てられる。
続けて行うとブロックするのは次のデータグラムを待ってるだけ。
0126デフォルトの名無しさん
2009/07/28(火) 19:18:22最大の大きさが分かってるんだから、分割する必要は無い。
普通のetherのパケットだと1500バイトくらいまでしか送れないよ。
0127デフォルトの名無しさん
2009/07/28(火) 19:26:030128デフォルトの名無しさん
2009/07/28(火) 19:35:13ありがとうございます。
UDPは送られてくるパケットが到達しないことがあるという前提に乗っかって、
GetLastError()で234がきたら、そのパケットは無視してバッファを倍増する
みたいな実装はスマートじゃないですよね?
どんな実装をするのが良いのでしょうか。やっぱりTCPですか?
0129デフォルトの名無しさん
2009/07/28(火) 19:45:39UDPということだから一切受けないという方法もある
0130デフォルトの名無しさん
2009/07/28(火) 19:53:37いえ、実際にはsendが50kbくらいで、recvが10kb程度を想定してました。
バッファをスタックにとっていたのでサイズを気にしていたのですが、他ではあまりスタックを使わないので大して意味のないこだわりだと思います。
0131デフォルトの名無しさん
2009/07/28(火) 20:20:14受信バッファサイズとパケットの(必ず相手に届くという)送達保証とは
別々に検討しなさい。
ユーザデータ長がEthenetフレーム(>>126が言うように1KBちょっと)を
越えるようであれば、(UDPではなく)TCPを使うのが定石。
もし(組み込み機器などで)リソースに制限があり、TCPドライバが
実装できないためにUDPを使用せざるをえない場合には、
(UDPの上位にある)アプリケーション層で送達確認機能を実装する。
具体的にはTFTPが参考になる。(もちろん受信バッファサイズは固定。)
でもWindowsなんでしょ?であれば素直にTCPで設計しなさい。
0132デフォルトの名無しさん
2009/07/28(火) 21:15:39>普通のetherのパケットだと1500バイトくらいまでしか送れないよ。
んな訳あるかい。df立てない限りフラグメントされる。
0133デフォルトの名無しさん
2009/07/28(火) 23:39:110134デフォルトの名無しさん
2009/07/28(火) 23:42:580135デフォルトの名無しさん
2009/07/29(水) 03:42:52ADSLとか非力NASとか。
0136デフォルトの名無しさん
2009/07/29(水) 03:54:36んな訳あるかい
0137デフォルトの名無しさん
2009/07/29(水) 09:12:15フラグメントがどのレイヤで発生するのか、勉強し直せ。
0138デフォルトの名無しさん
2009/07/29(水) 10:14:200139デフォルトの名無しさん
2009/07/29(水) 19:41:39サーバ側マシン命令を送って(例えば move とか)
サーバ側マシン上においてOpenGLで描画されている3DCGを動かす
プログラムを作りたいと思っています。
この場合,サーバ側は,マルチスレッドにするしか方法はないのでしょうか?
クライアントから命令がくる→OpenGLに反映
はマルチスレッドじゃないとむりぽ!?
えろいひと、よろしくおねがいします。
0140デフォルトの名無しさん
2009/07/29(水) 19:49:25OpenGLをマルチスレッドで動かすほうが面倒じゃね?
0141デフォルトの名無しさん
2009/07/29(水) 20:00:35シングルプロセス/シングルスレッド構成でも実現できると思うが、
想定している言語(C/C++/Java/Ruby/ObjC)や
プラットフォーム(Win/Linux/MacOSX)を明記してくれないと
アドバイスのしようがない。
0142デフォルトの名無しさん
2009/07/29(水) 20:04:58早速のご回答ありがとうございます。
iPhone上のOpenGL ESで描いたCGを母艦マシン(MacOSX)から
操りたいと考えています。
そのため,仕様言語はObjective-Cになります。
スレッド・プロセスまわりの話しに詳しくないので
何が最適なのか戸惑っています。
もうしわけありませんが、ご教示いただければ幸いです。
0143デフォルトの名無しさん
2009/07/29(水) 20:05:25結局は何もつくれないに一票
0144デフォルトの名無しさん
2009/07/29(水) 20:18:56Rubyがお勧め。標準でdRuby(分散オブジェクト)があるし、
OpenGLはRuby-GNOME2で実装されている。
プロジェクトが構想段階なら検討してみては?
0145デフォルトの名無しさん
2009/07/29(水) 20:28:470147デフォルトの名無しさん
2009/07/29(水) 20:55:450148デフォルトの名無しさん
2009/07/29(水) 22:03:03iPhone向けの開発経験は無いけどReference Libraryを漁ってみた。
まずNSProx/NSConnectionで分散オブジェクトが簡単だろうと思ったが、
iPhoneOSのFoundation FrameworkにはNSConnectionクラスが見当たらない。
次にCFNetwork(Core Foundation)にはHTTP/FTP/Web Service向けのクラスは
存在するけど、どれもクライアント側のプロトコルしか実装されていない。
結論として、直にTCPソケット(CFStream)を操作して独自のプロトコルを
実装するしかないと判断する。(TCPコネクション確立はiPhone側から開始)
送受信メッセージのエンコーディングには、PropertyListを利用するのが
良いと思われる。(想定転送データ量によってバイナリ/XML形式の選択を決断)
で、最終的に質問のマルチスレッディングの要否についてだけど、
run loopにコールバック関数を登録する事で非同期I/Oが実現できるから、
結論として「マルチスレッディング無しで実装可能」と判断する。
iPhone Reference Libraryにある文書"CFNetwork Programming Guide"の
章"Preventing Blocking When Working with Streams"を参照してみてください。
実際に試した訳ではないので(すべて推測なので)、間違ってたらゴメソ
0150148
2009/07/29(水) 23:23:04MacをクライアントそしてiPhoneをOpenGL表示サーバと位置づけ、
メッセージの対話形態としては「要求/応答/通知」方式にするのが良いと思う。
具体的には、Mac上のアプリケーションが表示メソッドを呼び出すと、
要求メッセージが送信され、iPhone上の表示サーバで要求された描画処理が
完了すると応答メッセージを返信する。またiPhone側からアプリケーションへ
イベントを発行したい場合(たとえば処理中断ボタンがタップされた)には、
通知メッセージを送信する。
おそらくX-Window Systemのコアプロトコルが参考になる。
意外にもWikipediaの文書が充実しているので、一読を勧めます。
ttp://ja.wikipedia.org/wiki/X_Window_System_コアプロトコル
RPCと分散オブジェクトを(Foundation Framework無しに)自力で実装する
わけですから、もしも汎用的な「リモートOpenGL表示システム」の設計を
目指すとしたら、かなり大変な作業になると思います。
でも、がんばって挑戦してみてください!!
0151デフォルトの名無しさん
2009/07/30(木) 11:51:422chに書き込めない原因がわかりません。誰か手伝ってくれますか?
http://www1.axfc.net/uploader/Sc/so/22688.zip
0152デフォルトの名無しさん
2009/07/30(木) 12:36:020153デフォルトの名無しさん
2009/07/30(木) 12:45:04V~~''-山┴''''""~ ヾニニ彡| 手伝う・・・・・・!
/ 二ー―''二 ヾニニ┤ 手伝うが・・・
<'-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 今回 まだ その時と場所の
/"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない
| ===、! `=====、 l =lべ=|
. | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを
|`ー‐/ `ー―― H<,〉|=| どうか諸君らも
| / 、 l|__ノー| 思い出していただきたい
. | /`ー ~ ′ \ .|ヾ.ニ|ヽ
|l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・
. | ≡ | `l \__ 我々がその気になれば
!、 _,,..-'′ /l | ~''' そのzipを開くのが
‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | 10年後 2chが無くなってからということも
-―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・!
0154デフォルトの名無しさん
2009/07/30(木) 12:52:010155デフォルトの名無しさん
2009/07/30(木) 12:55:12無かったね。218行目と357行目付近にWriteSz("\r\n");を追加。
0156デフォルトの名無しさん
2009/07/30(木) 13:30:43{
wsprintf(buf, "; %s=%s", it->first.c_str(),
url_escape(it->second).c_str());
WriteSz(buf);
}
これって cookie.end() にもデータはあるんだろ?
do
{
・・・処理・・・
}while(it != cookie.end()); じゃね?
0157デフォルトの名無しさん
2009/07/30(木) 13:37:09http://www.cplusplus.com/reference/stl/map/end/
0158デフォルトの名無しさん
2009/07/30(木) 13:40:090159デフォルトの名無しさん
2009/07/30(木) 14:32:190160デフォルトの名無しさん
2009/07/30(木) 14:34:070161デフォルトの名無しさん
2009/07/30(木) 14:35:190162デフォルトの名無しさん
2009/07/30(木) 16:06:02天邪鬼どもが
0163デフォルトの名無しさん
2009/07/30(木) 16:16:41アップしてくれ
0164デフォルトの名無しさん
2009/07/30(木) 16:23:550165デフォルトの名無しさん
2009/07/30(木) 16:25:02何でやねん、数行しか変わってないがな。
うまくいかんのならそう書けば。
そうそう、pc11.2ch.net を pc12.2ch.netに変えたりもしたけど。
0166デフォルトの名無しさん
2009/07/30(木) 16:43:230167デフォルトの名無しさん
2009/07/30(木) 23:04:220168デフォルトの名無しさん
2009/07/30(木) 23:15:36非同期系ではそういう幻想を持たないほうがいい。
0169デフォルトの名無しさん
2009/07/30(木) 23:20:34そうなんですか。あるんですか。。
デバッグ中にブロックされていないはずの recv() が WSAEWOULDBLOCK を
返すところを見ちゃった気がするのですが気のせいだと思ってました。 orz
0170デフォルトの名無しさん
2009/07/30(木) 23:45:35通常ありえないよ。
デバッガで止めてたからとか。
0171デフォルトの名無しさん
2009/07/31(金) 00:45:32戻りを確認するifを入れて実際に起きるかどうか確認すればいい。
0172デフォルトの名無しさん
2009/07/31(金) 11:25:21「ERROR:ブラウザを立ち上げなおしてみてください。」
て出てきてできなかった。
http://www1.axfc.net/uploader/Sc/so/23023.zip
0173デフォルトの名無しさん
2009/07/31(金) 22:26:18確かにデバッガで止めてはいたのですが。。
色々調べてみるとWin9x系では起きるがNT系では起きないとか
select()はブロックされない事を完全には保証しないとか。
サンプルプログラム等をみるとselect()は非ブロックキングソケットを
使うのが前提となっているみたいですな。
ブロッキングされないのが保証されるのならブロッキングソケットでも
問題ないはずですが。
0174デフォルトの名無しさん
2009/07/31(金) 22:32:30ブロックされないのが保証できないなら、インターネット動いてねーわ。
0175デフォルトの名無しさん
2009/08/01(土) 00:04:37ブロッキングの意味を間違えて理解してる気がする。
あと、
>select()はブロックされない事を完全には保証しないとか。
という一文についても、日本語の解釈が誤っているのでは?
これは、ソケットにデータが到着していないにもかかわらず、
selectが戻ることがある(=ブロッキングを保証できない)、
という意味だと思う。言い換えると、selectが戻っても
いざreceiveしてみると受信データ長=0になることも時にはあるから、
その場合はもう一度selectをかけておくれ、を期待しているのではないかな。
最後におせっかいを言うと、何かトラブルが発生したとき、
「....だから、問題ないはず」という思い込みは解決のさまたげになる。
「....だけど、どこかに問題があるはず」という発想でいこうよ。
0176デフォルトの名無しさん
2009/08/01(土) 00:20:24受信データ長=0はfinがきたってこと。
それでもう一度selectって処理は普通しない。
そうでなければTCP的に言えば受信データ長0ってのは
確認応答しかありえない。これは上位レイヤーに届くことはない。
と言ってみる。
0177デフォルトの名無しさん
2009/08/01(土) 00:28:02長さ1以上はデータ、0は通信の終了を意味する。
TCPがデータストリームの実装だという事を忘れている。
0178デフォルトの名無しさん
2009/08/01(土) 00:40:25では、
>いざreceiveしてみると受信データ長=0になることも時にはあるから、
の部分は、
>いざreceiveしてみるとエラー(EAGAIN or EWOULDBLOCK)になることも時にはあるから、
に訂正する。
0179デフォルトの名無しさん
2009/08/01(土) 12:10:552chへの書き込みができない。誰か助けて!
http://www1.axfc.net/uploader/Sc/so/23023.zip
0180デフォルトの名無しさん
2009/08/01(土) 13:02:00C/C++の宿題片付けます 129代目
http://pc12.2ch.net/test/read.cgi/tech/1242876647/
いろんな言語で宿題スレ
http://pc12.2ch.net/test/read.cgi/tech/1197620454/
C#,C#の宿題片付けます。
0181デフォルトの名無しさん
2009/08/01(土) 13:10:28ブロックすることあるよ」って書いてあるな。
0182デフォルトの名無しさん
2009/08/01(土) 13:25:00宿題スレに書けと? 宿題じゃないんだけど。
0183デフォルトの名無しさん
2009/08/01(土) 16:22:15これか・・・
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/select.2.html
>データが到着したが、検査でチェックサム異常が見つかり廃棄された
>時などに起こりえる。
一体どこで検査してんだ
破棄したなら上に投げるなよw
明らかに違反してるだろ
時など、って他にもあるなら書けよ
省略すんなよ
0184デフォルトの名無しさん
2009/08/01(土) 18:40:57自分でネットの勉強ぐらいしろよ。
0185デフォルトの名無しさん
2009/08/01(土) 18:51:30http://pc12.2ch.net/test/read.cgi/tech/1224449899/
0187デフォルトの名無しさん
2009/08/02(日) 05:48:55Linux TCP/IPドライバの中の人を擁護してみると、
一般論としてselectを前提にしたAPI(ソケット/デバイス/ライブラリなど)の場合、
selectでREAD可能を返したのにread操作でデータ無しとなってしまう事態は、
どうしても避けることができないケースが存在しえることを理解してほしい。
今回のLinux TCP/IPドライバの場合、受信割り込みの延長でのチェックサム計算は
(システム全体の応答性能を劣化させるから)避けたかったのだろうと推測する。
だから最近のAPIでは(特にGUI向けAPIでは)、APIの内部でevent loop & selectを実行し
本当にデータが到着した場合にだけ(事前にアプリケーションが登録した)
call back関数を呼ぶという方式が増えているのだと思う。
この方式であれば今回のselectの問題だけでなく、このスレでたびたび話題となっている
受信メッセージの組み立て処理もAPI側で吸収できる(アプリケーションから隠蔽できる)
利点がある。
0188デフォルトの名無しさん
2009/08/02(日) 08:35:44> 今回のLinux TCP/IPドライバの場合、受信割り込みの延長でのチェックサム計算は
> (システム全体の応答性能を劣化させるから)避けたかったのだろうと推測する。
割り込み処理は, 読み込んだ物理層のフレームをソケットバッファにつないで
ソケットバッファ持ってるプロセス(スレッド)を起こすだけ.
IPヘッダやさらに上位の層のチェックサムはプロセスコンテキストで計算して
る
到着したセグメントを捨てた後, 再度新規セグメントの入力待ちに移行する方
法を選択しなかっただけ.
おそらく, 初期の腐りきったスタックの挙動と互換性を取る為だとおもわれる.
0189デフォルトの名無しさん
2009/08/02(日) 09:02:37TCP/IPのタイムアウトの設定なんかかなり古いもんを引きずっている気がする。
connect()なんてタイムアウトまで待ちきれなくて自分で切ってるし
TIME_WAITなんかも長く居座り過ぎだし。
今のギガビットのネットワークにはそぐわないな。
0190デフォルトの名無しさん
2009/08/02(日) 09:20:05> TIME_WAITなんかも長く居座り過ぎだし。
RFC で 2MSL と決まってる
0191187
2009/08/02(日) 09:28:17詳しい解説ありがとう。TCP/IPドライバの実装に詳しそうだから教えてほしいのだけど、
>割り込み処理は, 読み込んだ物理層のフレームをソケットバッファにつないで
>ソケットバッファ持ってるプロセス(スレッド)を起こすだけ.
とありますが、起こすのはシステムプロセス(システムスレッド)でいいのでしょうか?
もしアプリケーションプロセスだと、そのプロセスが監視(select or recv)していない時は
フレーム受信キューに溜まりっぱなしになってしまう訳だから。
ただ、そうだとすれば、チェックサム計算はシステムプロセスで実行して
エラーであれば破棄し、正常であれば(上位の)ソケット受信キューへつないで
アプリケーションプロセスを起こすように実装していれば、
(チェックサム計算エラーに限定すると)今回のselect問題は発生しなかったように思えます。
その辺が自分にはよく分からないのですよ。
0192デフォルトの名無しさん
2009/08/02(日) 10:07:53> とありますが、起こすのはシステムプロセス(システムスレッド)でいいのでしょうか?
そだよ.
> フレーム受信キューに溜まりっぱなしになってしまう訳だから。
どっちにしても, 受け取る奴がいないとたまりっぱなし
window size = 0 で ack 返して送信側がそれ以上送らないように制御する
UDP だと黙って捨てる
> エラーであれば破棄し、正常であれば(上位の)ソケット受信キューへつないで
> アプリケーションプロセスを起こすように実装していれば、
BSD 系の実装だとそうなってるし, Linux も 2.0 から 2.2 へ移行するときの
大幅にスタック書き換えたタイミングで, そうゆう実装をする選択枝も可能
だったはず.
ソース眺めても, そんなに大変な変更じゃないし………
結局は, 過去との互換性を取ったって事ではあるまいか?
0193デフォルトの名無しさん
2009/08/02(日) 10:14:350194187,191
2009/08/02(日) 10:21:39過去との互換性ですか。
もしTCP/IPスタックの実装を参考にしようと思ったら、
(Linuxではなく)BSD系のコードを追ったほうが良さげですね。
どちらにしてもスレから脱線した質問ですので、これで終わりにします。
レスありがとうございました。
0195デフォルトの名無しさん
2009/08/02(日) 11:54:18もっと続けて欲しい
0196デフォルトの名無しさん
2009/08/02(日) 12:26:02ネットで拾えるサンプルプログラムがDQNな実装(特に.Net系)だったりするので
挙動が分かってないと苦労しまするよ。
0197デフォルトの名無しさん
2009/08/02(日) 12:27:58> 受信割り込みの延長でのチェックサム計算は(システ
> ム全体の応答性能を劣化させるから)避けたかったの
> だろう
昔組み込み向けネットワークドライバを Linux でクロ
ス開発してて、テストとして Linux のパケットをルー
プバックデバイス経由で RAW ソケットで読んでもチェッ
クサムが合わなくてさぁ…。
FreeBSD でやったら一発で通って「なんじゃそら」って
なもんでしたよ。
0198デフォルトの名無しさん
2009/08/02(日) 12:32:200199デフォルトの名無しさん
2009/08/02(日) 12:35:21そうなん?
Linux鯖って結構稼動している気がするが。
0200デフォルトの名無しさん
2009/08/02(日) 15:15:26パケット生成時にチェックサム作るなんてことしない。
その辺考慮してないと197みたいなことになる。
0201デフォルトの名無しさん
2009/08/02(日) 15:57:39自分のルータのグローバルIPアドレスを外部鯖にHTTP接続して取得したいのだけど、
【IPのみ】をページ表示してくれる有名な鯖とかってある?
本当はホスト名を一発表示してくれるとこがいいけど、
まーAPIでなんとかなるんでとりあずIPで!
0202201
2009/08/02(日) 15:59:44IPのみというのは、IPアドレス以外の無駄な情報が無いってこと。
正規表現とかHTMLパーサーとか使うのが面倒なので・・・。
0203デフォルトの名無しさん
2009/08/02(日) 16:02:160204201
2009/08/02(日) 16:03:50汎用的な方法がしりたいんでつ
いろいろな場所で使いたいので、ルータ固有となるとちょっと・・
SNMPも一般向けのルータにはあまりないらしいので。
0205デフォルトの名無しさん
2009/08/02(日) 16:25:49汎用的な方法は、自分のルータのグローバルIPアドレスを
Dynamic DNSに登録して、その名前でIPアドレスを検索すること。
登録するドメインは自分で取得してもいいし、借りてもいい。
おそらく自宅鯖を外部からアクセスしたいんだとエスパーするけど、
汎用的な方法はこれしかない。
DNSへの登録が嫌で、なおかつ汎用的でなくても良ければ、
自分で安いレンタル鯖を借り、要求元のIPだけを返すCGIを置けばいい。
いずれにしても板違いの質問だよ。
自宅サーバ板/通信技術板/ネットサービス板へドーゾ。
0206デフォルトの名無しさん
2009/08/02(日) 16:27:38へぇ〜、そんなハードもあるんだ。。
一般のパソコンにも実装されてるの?
0207デフォルトの名無しさん
2009/08/02(日) 16:35:00そういうサーバを立てればいいだけじゃね?
0208デフォルトの名無しさん
2009/08/02(日) 16:38:38> いまどき、IPはもちろん、TCPチェックサムまでは、送信受信ともハードウェアの仕事でしょ。
> パケット生成時にチェックサム作るなんてことしない。
NAT とかどうすんのさ。仮想レイヤは? 一々ハードウェ
アレイヤまで落すのか? そもそも NIC 持ってないマシ
ンでの SLIP とかどうすんの?
0209デフォルトの名無しさん
2009/08/02(日) 16:42:49基本reject_hostに入れてる。
犬のTCP/IPスタック周りの挙動は怪しいよな。学習用のminix由来じゃしょうがないが。
0210デフォルトの名無しさん
2009/08/02(日) 16:48:04> 学習用のminix由来
Minix なめんな(w
http://www.minix3.org/
0211デフォルトの名無しさん
2009/08/02(日) 16:50:580212201
2009/08/02(日) 16:52:57板違いなのに答えてくれてサンクス
自分がだけが使うわけではないから、DynamicDNS登録もcgiもパスかな。
素直に診断君とか、適当な鯖にUDP送って取得することにする
どもでしたー
0213デフォルトの名無しさん
2009/08/02(日) 16:53:14おそらく以下の記事にある「TCPチェックサムオフロード」の事を
>>200は言っているのだと思う。
FreeBSD 10ギガビットネットワーク高速通信の秘密(2008/10/29)
[3] ハードウェアオフロードによる処理の高速化
http://journal.mycom.co.jp/articles/2008/10/29/bsdcon5/002.html
ただしサポートしているのは一部のサーバ向けハイエンドNICだけだったはず(?)だし、
ましてや>>197は「組み込み向けネットワークドライバ」と明記しているから、
>>200の言う「いまどき」が何を(or いつの時代)を指しているのかよくワカランwww
0214デフォルトの名無しさん
2009/08/02(日) 16:54:48shutdown(soc, SHUT_RDWR);
close(soc);
0215デフォルトの名無しさん
2009/08/02(日) 17:37:52何年前から来たんだよ。FEの時代は高級品だけだったけど、GbEならオンボだつて蟹だってついてる。>TOE
Windowsのハードウェアのプロパティにチェックサムオフロードの設定あるだろ。
オフロードが効いてるとWiresharkでチェックサムエラーになるから判る。
Linuxは、ドライバ設計が古くてTOE使えない時期が長かったけど、流石に今は対応してたはず。
■ このスレッドは過去ログ倉庫に格納されています