ネットワークプログラミング相談室 Port9
レス数が1000を超えています。これ以上書き込みはできません。
0001pthread_create
NGNGProgramming 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/
過去スレ:
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port6 http://pc2.2ch.net/tech/kako/1052/10521/1052106444.html
Port7 http://pc2.2ch.net/test/read.cgi/tech/1063035045/
Port8 http://pc5.2ch.net/test/read.cgi/tech/1073560271/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
0002デフォルトの名無しさん
NGNGUNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
The Implementation (TCP/IP Illustrated, Volume 2)
http://www.amazon.co.jp/exec/obidos/ASIN/020163354X/
Linuxソケットプログラミング―ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
TCP/IPによるネットワーク構築〈Vol.3〉―クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
Webプロトコル詳解―HTTP/1.1、Webキャッシング、トラフィック特性分析
http://www.amazon.co.jp/exec/obidos/ASIN/4894715414
WinSock2.0プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756142362
0003デフォルトの名無しさん
NGNGRFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
ネットワークプログラミングの基礎知識
http://x68000.startshop.co.jp/~68user/net/
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
ツール類
tcpdump
http://www.tcpdump.org/
Windump
http://netgroup-serv.polito.it/netgroup/tools.html
pathchar
ftp://ftp.ee.lbl.gov/pathchar/
pchar
http://www.employees.org/~bmah/Software/pchar/
00041
NGNG補足あったらよろしく。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGPort6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port7 http://pc5.2ch.net/test/read.cgi/tech/1063035045/
0007デフォルトの名無しさん
NGNG乙ディス
0008デフォルトの名無しさん
NGNGネトプ
0009デフォルトの名無しさん
NGNG「raw ソケットが必要になるのは、新しいプロトコルを設計する場合か、
ユーザーインターフェースを持たないプロトコル (ICMP など) を扱う場合に限られる」
と書かれているのですが、新しいプロトコルを設計する場合というのは
オリジナルのプロトコルでもrawソケットなら扱えるということですか?
もしそうであれば、作り方やその扱い方についてのわかりやすいサイトとかないでしょうか?
"raw socket"、rawソケット、生ソケット、SOCK_RAWなどのキーワードで
いろいろ検索してもよい手がかりが見つけられなかったので誰か教えてください。
0010デフォルトの名無しさん
NGNG>>2より
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
0012デフォルトの名無しさん
NGNGFreeBSDの環境でUDPプログラムを組んでの話なのですが
recvfrom()をブロッキングせずに素通りしてしまいます。
しかも、始めは問題なかったのですが、タブを消してからブロッキングしなくなりました。
一体どうなってるんでしょうか?
ちなみに、
<タブ>fprintf(stderr, "起動\n");
のタブを消しただけです。
今は、この行自体消してます。
あまりにも分かりにくい話だとは思うんですが、よろしくお願いします。
ちなみに、改行コードを疑って、LFでもRF+LF試しましたがダメでした。
0013デフォルトの名無しさん
NGNGhttp://www.cl.cam.ac.uk/Research/SRG/netos/arsenic/
http://www.cs.nwu.edu/~pdinda/minet/minet.html
http://www.joerch.org/tcpip/
http://freshmeat.net/projects/libutcp/
0014デフォルトの名無しさん
NGNG早い機会に病院に行ってください。上司とも良く相談してください。
001512
NGNG言われると思ったw
しかし、こんな意味不明な現象を誰に相談すれば良いのやら(汗
なんか、どこか領域破壊してて、今までは、再現性の無い成功 をたまたましてただけなのかな?
001612
NGNG変更前のソースだとどうやってもこんな事にはならない・・・
やっぱ変な話だけど、このタブが原因っぽいです。
0017デフォルトの名無しさん
NGNGそれからCR+LFね。Carriage Return + Line Feed
0018デフォルトの名無しさん
NGNG002012
NGNG一応、このファイルです。
0021デフォルトの名無しさん
NGNGstrlen(buf)
0022デフォルトの名無しさん
NGNGこれループからぬけられないのな。
0023デフォルトの名無しさん
NGNG基礎がやばい印象が...
002412
NGNGうp用にコード削っただけで
ここから処理分割したりしてるんで、その辺は大丈夫です。
>>21
THX!
そこでしたか・・・
でも、何でタブを残してたら動いたんでしょう?
>>23
一応18年間PGやっててこんなのは初めてですよ。
本当に意味不明な現象です。
0025デフォルトの名無しさん
NGNGどこが?
定番中の定番コードを書いてると思うが・・・
このコードに基礎も糞も・・・
>>24
いや、strlen(buf)直しても直らんよ
俺も良くわからんが、文字コードとか変なんじゃないの?
一度面倒だけどコピペじゃなくて書き写してみたら?
0026デフォルトの名無しさん
NGNG>一応18年間PGやっててこんなのは初めてですよ。
エイプリルフールは昨日で終わりましたよ。
0027デフォルトの名無しさん
NGNG人のコード見ると、こういうケチをつけるやつが居るのは常識だと思われ
スルーしないと宗教闘争に発展するから注意汁
まぁ、文献でよく有るパターンのsockの初期化コードとrevcfrom()のコード見てケチをつけるのもアレだと思うがw
>>24
改行コードだけじゃなくて文字コードを見直せ
0028デフォルトの名無しさん
NGNGstrlen(buf)の間違いに気が付かないところと、
その間違いが判った後だというのに、
>本当に意味不明な現象です。
とか言ってるところが、
>基礎がやばい印象
なんでしょ。
とても18年PGやってきたとは思えない。でなければ、CとかC++は、初めてでしょ。
こんなところで悩むのは、最初の1年で勘弁してくれ。ローカル変数とスタックの関係とか
判ってたら、悩むような所じゃないよ
0029デフォルトの名無しさん
NGNGいや、、、このコードは、strlen()とかローカル変数とstacとかの問題じゃないと思うが・・・
っていうかお前等気付けw
あふぉばっかりかw
0030デフォルトの名無しさん
NGNG> memset((char *)&me, 0, sizeof(me));
ここでなぜか(char *)にキャストしているところとかじゃない?
0031デフォルトの名無しさん
NGNGbuf の初期化がされてないのが問題では? ってことだろ。十分ありうる。
初期化ミスやポインタのミスは、コンパイルし直しただけで動いたり動かなく
なったりする、というのはありがちだし、多少なりともC/C++ の経験があれば
すぐ想像つきそうなもん。
俺は >>23 ではないが、コードの質じゃなくって、質問の仕方やその辺から元
の人は経験少なそうに見えてしまうね、悪いけど(18年間何をされてたのか知
らないけど、少なくとも「タブが…」なんてところで悩むレベルはすぐに卒業
して欲しいな)。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG003533
NGNGバッファのサイズを測りたいならstrlenじゃなくてsizeofだぞ。
0036デフォルトの名無しさん
NGNG>bufの初期化は既に試してます。
どのように初期化したの?
ちゃんと、
memset(buf,1,1023);
buf[1023] = 0;
みたいにしたの?
0037デフォルトの名無しさん
NGNGvoidがない時代の相当古い文献を読んでいるんだな・・・
0038デフォルトの名無しさん
NGNG多分だけどな。(試したことないからしらん)
recvfrom()の第3引数、len に0以下の数値を渡すと、
こういう現象になるんだと思うよ。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNG普通のプログラミング相談になってるのは気のせいか?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNG>>24
up用に削ってたらfalse返す部分も削ってしまったらしい
0043デフォルトの名無しさん
NGNGそういうことか。
>>34
fromlenはsocklen_tで宣言しようよ。
(確かこれについて前スレで質問していたよね?)
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNG>>15 で
>なんか、どこか領域破壊してて、今までは、再現性の無い成功 をたまたましてただけなのかな?
と、ちゃんと結論が出ているではないか。
0046デフォルトの名無しさん
NGNGおーいどうなったんだー早く結果あげろー
004912
NGNGfprintf(stderr, "受信待機中\n");
if( recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&from, (socklen_t *)&fromlen)<=0)
return true;
とあった所の、
fprintf(stderr, "受信待機中\n");
をコメントアウトすると、ブロッキングするようになりました。
何故ですか?w
005012
NGNGprintf("受信待機中\n");
に書き換えても上手く行きました。
これはsocketの仕様でしょうか?
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGそれとも物理的に接続できない状態にしてあるのでしょうか?
0053デフォルトの名無しさん
NGNG根本的な原因は、portが1000なのでpermission deniedでbind()がコケてる、
というだけ。
bind()がコケてるのでrecvfrom()はfprintf()云々に関わらず延々エラーに
なっているが、コメントアウトによって(何も表示されなくなるので)ブロッキング
してるように見えると。
従ってportを2000とかにしてやりゃとりあえずちゃんと動く。
で、プログラミング歴何年だって?
005412
NGNGいや、外部から切り離して、suで実行してるからbind出来ますよ。
そこが原因ではないと思われます。
というか、実際fprintf()を変えたら、100%テスト用のクライアントと更新できました。
んで、変えなかったら100%出来ません。
0055デフォルトの名無しさん
NGNGあのさ、>>36の初期化が出来る頭を持っているなら、
sizeof()とstrlen()を混同したり、しないだろ。
それよりも、その初期化をするときに、strlen()がおかしい
って気が付くだろ?
ネタはもうちょっと考えてやれよな(藁
0056デフォルトの名無しさん
NGNG確かに、変ですね。
if( recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&from, (socklen_t *)&fromlen)<=0)
return true;
//受信した場合の処理
num = (int)buf[0];
switch(num)
{
case CH_REQUEST:
fprintf("CH_REQUEST\n");
break;
case CH_RESIST:
fprintf("CH_RESIST\n");
break;
case END:
fprintf("END\n")
return false;
break;
}
このような形に変更してやってみました。
recvfrom()の前でfprintf(stderr,"")をやると、どうやら素通りしてしまうようです。
recvfrom()の直度に書いた場合は、普通にブロッキングします。
なので、>>53は明らかに違いますね。
もしかして、コンパイラか何かのバグかな?
005756
NGNG005912
NGNG自分もFreeBSDの4.8です。
自分も同じ事を既に試してましたが…
やっぱり同じでしたか・・・
>>58
一応、これうp用にコード削ってますけど
正式な方はコマンドライン引数でポート変えれるんで…
>>55
1つのを作ってる間に、日にちが私用で空いたりすると、たまにバカなミスする事あるんですよ(藁
コンパイラがエラー吐いてくれなきゃ危なっかしくてしょうがない(苦笑
0060デフォルトの名無しさん
NGNGprintf()の結果が画面に表示されずに、プログラムが終了されてから表示されるなんて変な事があった
んで、>>12と同じようにfprintf(std,"")で書き換えたら表示は出来たが同じようにrecvfrom()が機能しなくなった事があったが・・・
同じ事か?
0062デフォルトの名無しさん
NGNGerrnoぐらいは調べた方がいいと思われる。
プログラム修正するのが面倒ならktraceでも可。
0063デフォルトの名無しさん
NGNGスレ呼んだけど、戻り値は0でエラーは無かったといってなかった?
0064デフォルトの名無しさん
NGNG前回の型についての質問といい、今回の質問といい、、、
0065デフォルトの名無しさん
NGNG今回の質問は俺もわからんのだが・・・
お前はわかるのか?
0066デフォルトの名無しさん
NGNG是非>>64にバカにも分かるように説明して頂きたい
0067デフォルトの名無しさん
NGNGアフォに構っている人も、早い機会に病院に行ってください。
上司とも良く相談してください。
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNGむかし//コメントの中に\と同じ文字コードを持つ漢字はいってるとさ、
次の行がコメント扱いされてコード実行が行われないプログラムになった事あるんだけど。
とくにWindowsと違ってgccはシフトJISをきちんと認識しないでしょ?
0070デフォルトの名無しさん
NGNGそれ以来コメントは全て/* */に変更かけたし。
0071デフォルトの名無しさん
NGNGここは、C/C++言語スレじゃないよ!
>>68
いらねーよ!
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNG0077年寄りコボラー
NGNG・・・確かに、今更Cの基礎なんてやってらんないし
プロとして食っていくために無理やりボロボロの土台の上に積み上げていくから
基礎ボロボロで最悪だがな(涙
0078デフォルトの名無しさん
NGNG疑われているのでやっぱりktraceかな。カーネルとのAPIレベルで
何が起きているのかの確認にはなる。そもそもrecvfromが呼ばれて
ないとかさ。
0079デフォルトの名無しさん
NGNGrecvfrom()の返値さえ保存してないクズ野郎が?
0080デフォルトの名無しさん
NGNGはっきりと証拠を見たほうが信じやすいでしょ
0081デフォルトの名無しさん
NGNG相手が自分と同等の能力があると仮定してはいけません。
0082デフォルトの名無しさん
NGNG相手が自分と同等の能力しかないと仮定してはいけません。
0083デフォルトの名無しさん
NGNGだからお前このスレ百回読め
もう既に2回も書いてるぞ
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG0087デフォルトの名無しさん
NGNGサーバープログラムであいているポートを自動的に取得して使いたいのです
0088デフォルトの名無しさん
NGNG使えるとは限らないと思うんだが・・・
0089デフォルトの名無しさん
NGNGできれば未使用で使えるポートを列挙できる方法を知りたいです。
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNG49152〜6535(でしたっけ?)
は動的に自由に使えるんじゃないんですか?
0092デフォルトの名無しさん
NGNG>>88を読み直そう。
0093デフォルトの名無しさん
NGNG>>87を読み直してください。
0094デフォルトの名無しさん
NGNGここの連中は本当に役に立ちませんね。
0095デフォルトの名無しさん
NGNG列挙する方法はないです。>>88の意味において。
>>87
普通は使っていいところを順番にbind()してみます。
成功したら使えるってことです。
0096デフォルトの名無しさん
NGNGnetstatで使ってるポートは出てくるんだから、
その逆やれば、いーんじゃねーの?
だからといって、次に使おうとしたときに使えるかどうかは
しらんけどな。
0097デフォルトの名無しさん
NGNG使用できるポートを検索する→発見→bind()
↑
この辺で突然他のプログラムに使用される可能性がある。
って事でそ?
まぁ、そんな一瞬の間を突いて使われる事はめったに無いと思うけど、100%使えるとは限らんぞ と
0098デフォルトの名無しさん
NGNGようになってるんだけど、winsockはそういうのないの?
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGまじですか?、そんな一瞬の隙をつかれることがあるんですか?
考えもしませんでしたw
0102「ほとんど」だから、余計性質が悪いわけなんだけどな。
NGNG大丈夫だよ、あるかどうかの判定した直後に bind すれば、ほとんど割り込まれたりしないからさ。
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGおいおい、メール欄だけじゃあ、誤解するだろ。
++portしてretryしなきゃダメだよ。
0105デフォルトの名無しさん
NGNG良いだけなんだがな。。
0106デフォルトの名無しさん
NGNGバッファオーバーランと並ぶ
セキュリティホール基本技の一つでしょ
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG今Socketプログラミングの勉強の為に、コミュニケーションツールを作ってるのですが
主に音声チャットや映像配信(これらは一部のパケットの欠陥があってもOK)
を考えていて、ファイル転送などのサポートも考えています。
それで、プロトコルを今どうするか考えているのですが、こういう場合はUDPの方が良いのでしょうか?
ファイル転送や文字のチャットでは欠陥されると色々困るんですが・・・
また、UDPでエラーチェックをする場合はどうすれば良いのか教えてください。
転送出来てるかどうかのメッセージをやりとりするとしても、そのメッセージ自体が相手に伝わってるかどうかもわからないでしょうし・・・
0111デフォルトの名無しさん
NGNG別にTCPとUDPのどっちか一方しか使ってはいけないというわけじゃないんだから
そう思うなら使い分ければいいと思う。
エラーチェックというか再送が必要なときにそれをUDPでやるのは、TCPだと
うまくいかなくてそれがなぜかわかってからで遅くはない。そうでないと車輪の
再発明になりかねん。プログラミングの勉強ということなのでそれをやってみる
のも勉強のうちならそれはそれで意味があるだろうが。
0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNG0114デフォルトの名無しさん
NGNG普通は、音声、映像のストリーミング配信をUDPでやって、
ファイル転送、文字チャットはTCPだろうね。
>>111も言ってるが、単に一つのツールの中で、つかいわけるだけ。
0116デフォルトの名無しさん
NGNGもちっと、勉強しましょう。
たとえば、オンラインゲームとか、ちゃんと理由があって UDPにしてたりする。
0117デフォルトの名無しさん
NGNGPSOとかはTCPとUDPを使い分けているね。
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG前スレのSkypeの話を見てみれば?
それとMOはほぼUDPの天下。
稀にTCPオンリの変り種もいるけどね。
0120デフォルトの名無しさん
NGNGPunching hole UDPとか面白そう。
>>118
どうやってUDPで状況確認するの?
まさか、ずっと確認のためのパケット送り続けるとか?
0121デフォルトの名無しさん
NGNGそうだよ。定期的にサーバに送る。
0122デフォルトの名無しさん
NGNG接続張りっ放しでたくさんかかえると大変だから。
すぐに接続切っちゃったら、UDPでポーリングするのと比べて、
それほどアライブチェックの確実性が上がるわけでもないし。
0123デフォルトの名無しさん
NGNG今Wisosockでコードを組んでるのですが
socklen_tを使うと定義されてないって言われます。
winsock2.hをインクルードするだけではダメなのでしょうか?
0124デフォルトの名無しさん
NGNGそれはどっからも参照されてないみたいだから、必要ならincludeしてやれ。
または、自分でtypedefするかどっちかだな。
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGこれをinlcudeする前に、なんかincludeしなきゃならんのかな〜
追っかけるの面倒くさいなあ〜
もういいや。
typedef int socklen_t;
0127デフォルトの名無しさん
NGNG#include <windows.h>
#include <ws2tcpip.h>
とするとエラーが出まくったって事?ならば
#define _WINSOCKAPI_
#include <windows.h>
#include <ws2tcpip.h>
でどうすか? つかゴメン試してないけど。
あと,7ビットフラグが立ったよ〜ヽ(´ー`)ノ
0128デフォルトの名無しさん
NGNG#include <winsock2.h>
#include <ws2tcpip.h>
ってやったら使えたよ。@VS.net
ちなみにwinsock2.hをインクルードした時にはwindows.hをインクルードする必要無いみたい
なんかの理由でインクルードしたい場合にはwinsock2.hを先にインクルードする必要があるみたい。
まあ、コレも詳しく見てないんで細かいことはしらんけど。
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG#include <windows.h>
#include <winsock2.h>
こんな感じかにゃ
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGWinsockでの質問なのですが
recvfrom()で、指定した時間音沙汰無しだったらブロックをやめて進めるって事をしたいのですが
何か良い方法はありませんでしょうか?
0134デフォルトの名無しさん
NGNGブロッキングの時間を延ばしたいの?
それともtimeoutしても問題なく動く方法を知りたいの?
それともブロッキングしなくてもいい処理の仕方に変えたいとか?
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNGsetsockopt()+SO_RCVTIMEO
select()
の三者の内、いづれかを使うということになると思いますが、
WinSockにはSO_RCVTIMEOがなかったと思うので、timeoutが指定できる
select()を使うのというのはどうでしょうか?
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGスレ違いもいいとこだ。
0139デフォルトの名無しさん
NGNG(;´д`)
0140デフォルトの名無しさん
NGNG資格全般
http://school2.2ch.net/lic/
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGひろゆきの収入なくなるからだめか
0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNGPHPにしたところで転送量は減らない。
0145デフォルトの名無しさん
NGNGすれ違い終了。
0146デフォルトの名無しさん
NGNGたしか、「phpはバグがあってメモリを離さないからダメだ」みたいなことを
何年前かにひろゆきが語ってたぞ。
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG独自プロトコル? それとも2ch向けHTTPサーバ?
0149デフォルトの名無しさん
NGNG0150デフォルトの名無しさん
NGNG独自プロトコルだと、IEでも見られないし、
専用ブラウザも作り直しになっちゃうよ。
スレッド式掲示板に最適化された、httpdでしょ、やっぱし。
(mod_2chとかでもいいかとも思うけど)
0151デフォルトの名無しさん
NGNG以前似たようなものをつくってこの板で宣伝していたやつがいたな。
ようじょとかいう名前だったかな。
0152デフォルトの名無しさん
NGNGこれか?
http://www.bq--3ayiomcfao4tbgzqq4.to/www/project/youjyo/
「ょぅι゛ょ」なんて名前を付けたのと、作者が変態なのと
Windowsで実装したのが失敗だったな。物は良いと思うが。
0153デフォルトの名無しさん
NGNGWinsockなのですが
recvfrom()のブロッキング時間を設定するにはどうすれば良いのでしょうか?
0154デフォルトの名無しさん
NGNGselect
0155153
NGNGサーバーへsendto()でコマンドを送って
recvfrom()で一定時間待って、サーバーから応答が無ければそのままブロックを終わらせたいのですが・・・
select()を使うとは具体的にはどうすればいいのでしょうか?
recvfrom()の直前にselect()を持ってきて、ブロッキング時間を設定して
読み取り可能ならそのままrecvfrom()、時間以内に出来なかったらスルーするって感じでしょうか?
0156デフォルトの名無しさん
NGNGあと、setsockoptでタイムアウトの指定ができるので(WinSockだと
多分できないんですが)確認しておいたほうがいいですよ。
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG申し訳ない。
0159デフォルトの名無しさん
NGNGstruct timevalを使って設定するのが面倒無いと思われます。
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG何で?Winsock2使えない環境の方が稀だと思うんだが
0162153
NGNGSO_RCVTIMEOで出来るという事なので、それでやってみます。
あと、Winsock2ですが、Win2k以降のみをターゲットにしてるので大丈夫です。
0163デフォルトの名無しさん
NGNGSO_RCVTIMEO and SO_SNDTIMEO
(略)
If a send or receive operation times out on a socket, the socket state
is indeterminate, and should not be used; TCP sockets in this state
have a potential for data loss, since the operation could be canceled
at the same moment the operation was to be completed.
こんな戯けた仕様だけどそれでもいいの?
0164デフォルトの名無しさん
NGNG実際に確認もせずに安直に薦めてしまって。
しかし、すごいねWinSock
0165デフォルトの名無しさん
NGNG0166164
NGNG> しかし、すごいねWinSock
MSDNのWinsock2ドキュを一読することを勧める。かなり笑える。
Windowsのversionが違えば振る舞いが違うくらいは当たり前。
0167166
NGNG0168デフォルトの名無しさん
NGNG自分でタイムアウト処理書いた方が良さそうだね。
0169デフォルトの名無しさん
NGNGWinSockならWinSockの流儀に従えばいいとおもわれ。
もちろん逆も同じ事が言えると思われ。
片方でできるからもう片方が出来て当然、出来ないのはクソ
みたいな発言はあまりに浅慮だと思う。
0171デフォルトの名無しさん
NGNG>>163の文章の意味理解できない人?
0172デフォルトの名無しさん
NGNGWinSockなら>168みたく処理すればいいじゃん?って言っているのでは?
どうせ文句いった所でMSが直してくれる分けでもないし
つか、普通selectっしょ?
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGWndProcで処理できるから結構好きなんだが
0175デフォルトの名無しさん
NGNGfd_setの中にセットされてるsocketを一覧する必要があるんだけど、
sys/types.hにあるfd_setの中のfd_maskの配列の長さが2なんだけど、
FD_SETは
# defineFD_SET(n, p)((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
ってなってる。NFDBITSは32だから、ソケットの番号が64より大きいとはみ出ない?
それともディスクリプタって64個しか開けないの?
0176デフォルトの名無しさん
NGNG0177175
NGNG登録の限界数がそれなのはわかるんだけど、
FD_SETでn/NFDBITSってやてるから、ソケットの番号が100とかだったら
100 / 32 = 3になって、配列の長さを越えてない?
0178デフォルトの名無しさん
NGNGThe variable FD_SETSIZE determines the maximum number of descriptors in a set.
(The default value of FD_SETSIZE is 64, which can be modified by defining FD_SETSIZE to another value before including Winsock2.h.) Internally, socket handles in an fd_set structure are not represented as bit flags as in Berkeley Unix.
FD_SETSIZE は可変できるズラ。デフォルトが64なりよ。
0179175
NGNGちょっと言い方が悪かったかも。
ソケットの数じゃなくて、ソケットディスクリプタの番号が大きかったら困るんじゃ?
ってのが質問。
unsigned long fd_bits[2];
fd_bits[n/32] = (1L << (n % 32));
ってな感じでnの値が64以上だとnが64より大きな番号を持つソケットだとだめじゃない?
ソケットを64個以上生成したら一つはディスクリプタの番号が64より大きな数字になると思うんだけど、
俺何か勘違いしてる?
それともそういう時はFD_SETSIZEを意識的に調整しないとだめということ?
0180デフォルトの名無しさん
NGNGま、そういうことだ。selectの設計はそれほど古いのだよ。
だからpollとかkqueueとかに取って変わられつつある。
0181デフォルトの名無しさん
NGNGちと調べてみたが、cygwinは意図的にunix風のselectに見えるように
しているみたいだ。winsock2のfd_setとは互換性がない。
unixでもそうだと思うが、selectの第一引数nfdをデカくして、
かつ、デカい配列を渡せばいいんじゃねえの?
ダメなら怒られるだろうし・・・
0182デフォルトの名無しさん
NGNGとりあえずマクロは無視して、
select(2)の第一引数にどのくらい大きい数を与えられるか、
fileをいくつopen(2)出来るか調べてみてはどうか?
0183175
NGNGサンクスコ。ってことはやっぱりFD_SETSIZEの値を大きくしないとだめなのね。
ちなみにディスクリプタの番号って必ず小さい数から順番にとられていくの?
ソケット開閉を繰り返したら番号がすげー大きくなる、ってことはない?
>>182
>select(2)の第一引数にどのくらい大きい数を与えられるか、
これってどういうこと?
どの数字までならアルゴリズム的に問題ないか、ってこと?
>fileをいくつopen(2)出来るか調べてみてはどうか?
Linuxの2.4.20だとulimit -nのディスクリプタの数の上限よりちょっと少ないくらいだった。
ちなみにCygwinで書いてるのはWindowsで書いてるソフトを移植するために
コンパイルエラーがGCCとVC++の両環境で出ないところまでテストするためでつ。
0184デフォルトの名無しさん
NGNG> これってどういうこと?
> どの数字までならアルゴリズム的に問題ないか、ってこと?
cygwinで。大きすぎたらエラーが返ってくるはず。
テスト簡単でしょ?
maskの方は0だけ有効にして、第一引数をどんどん大きくして、
select(2)するloopを書けばいいだけだから。
> Linuxの2.4.20だとulimit -nのディスクリプタの数の上限よりちょっと少ないくらいだった。
cygwinで試してみれば?
0185175
NGNG全部CygwinでFD_SETSIZEはデフォルトの64のままね。
一つは>>184の通り。
int result;
int a=0;
fd_set fds;
int b=0;
struct timeval tv;
int i,j;
for(i=0;i<FD_SETSIZE*2;i++){
tv.tv_sec=0;
tv.tv_usec=100*1000;
FD_ZERO(&fds);
FD_SET(0,&fds);
result = select(i,&fds,NULL,NULL,&tv);
if(result != 0){
printf("failed at %d. fd_setsize=%d\n",i,FD_SETSIZE);
}
}
selectは正常にタイムアウト。問題なし。
0186175
NGNG一個のソケットでSelect,二個のソケットでSelect...って繰り返してる。
改行が多いって言われたからエラーハンドリングは削りますた。
int a=0;
fd_set fds;
int b=0;
struct timeval tv;
int result,i,j,sockets[FD_SETSIZE*2],maxfdnum;
struct sockaddr_in localaddr;
memset(&localaddr,0,sizeof(struct sockaddr_in));
localaddr.sin_family=AF_INET;
localaddr.sin_addr.s_addr = INADDR_ANY;
localaddr.sin_port = 0;
for(i=0;i<FD_SETSIZE*2;i++){
tv.tv_sec=0;
tv.tv_usec=100*1000;
FD_ZERO(&fds);
sockets[i] = socket(AF_INET,SOCK_DGRAM,0);
result = bind(sockets[i],(struct sockaddr*)&localaddr,sizeof(struct sockaddr_in));
maxfdnum=0;
for(j=0;j<i;j++){
FD_SET(sockets[j],&fds);
maxfdnum = (sockets[j] > maxfdnum)? sockets[j] : maxfdnum;
}
result = select(maxfdnum+1,&fds,NULL,NULL,&tv);
printf("loop:%d a=%d\n",i,a);
}
65回目のループ(i=64)で処理が停止した。selectから制御が戻らなくなった。
ちなみにうちのCygwinだとソケットは90弱しかbindできなかった。
0187175
NGNGFD_SETSIZE+10(64+10)のソケットをbindして、最初の10個以外の64ソケットを
FD_SETしてる。エラーハンドリングは割愛。
int result;
int a=0;
fd_set fds;
int b=0;
int i,j;
int sockets[FD_SETSIZE+10];
struct sockaddr_in localaddr;
memset(&localaddr,0,sizeof(struct sockaddr_in));
localaddr.sin_family=AF_INET;
localaddr.sin_addr.s_addr = INADDR_ANY;
localaddr.sin_port = 0;
for(i=0;i<FD_SETSIZE+10;i++){
sockets[i] = socket(AF_INET,SOCK_DGRAM,0);
result = bind(sockets[i],(struct sockaddr*)&localaddr,sizeof(struct sockaddr_in));
}
for(j=0;j<FD_SETSIZE;j++){
FD_SET(sockets[FD_SETSIZE+10-j-1],&fds);
}
printf("a=%d b=%d\n",a,b);
a=8192 b=0ですた。
長くてスマン
0188デフォルトの名無しさん
NGNG> 65回目のループ(i=64)で
これは下請のWinsockのselect()の制限だろうね。
> 処理が停止した。selectから制御が戻らなくなった。
これはcygwinの実装のせいかも知れないけど。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNG> fdsって
fdsってなんだよ(w
0191デフォルトの名無しさん
NGNG一般的な方法はどのようなものでしょうか?
参考文献があれば教えていただけないでしょうか。
お願いします。
0192デフォルトの名無しさん
NGNG文献に頼るな。
0193デフォルトの名無しさん
NGNG文献に頼るほどのものじゃないだろw
まぁ、俺がやる方法は
アップデートが必要と思われる部分はあらかじめDLLにしておいて
DLLを開放した後上書きする方法
0194デフォルトの名無しさん
NGNGネットワークダウンロードだろうが、CD-ROM配布だろうが、やること一緒。
0195デフォルトの名無しさん
NGNGダウンロードやれば?
0196デフォルトの名無しさん
NGNGhttp://aux.tora3.net/
0197191
NGNGもうちょい勉強してでなおします。
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNGhttp://fink.sourceforge.net
プラットフォームはDarwinだけどね。
0201デフォルトの名無しさん
NGNGWSASyncSelect()使えばWSASend()とか非同期系不要でしょうか?
0202デフォルトの名無しさん
NGNG非同期と非ブロックは区別(ry
0203デフォルトの名無しさん
NGNGでも、WSASyncSelect()使えば、WSASendとか使わなくて良いようになりますよね?
ブロックしなくて直ぐに終わるんだったら、結局一緒のような・・・
0204デフォルトの名無しさん
NGNGプログラムの仕方次第で、同じコトを実現するための複数の方法があるってことよ。
正解は一つじゃないの。
0205デフォルトの名無しさん
NGNGあなたの頭の中に描いている用途にはそれで十分であっても、
>>201のような一般的な質問をすれば、答えはノーしかあり得ない。
0206デフォルトの名無しさん
NGNG非ブロックってブロックしないだけで処理してる間は止まっちゃうんだね。
なら巨大な容量のものを送ったり受信したりする時は、WSASend()とかは必要 か
0207デフォルトの名無しさん
NGNGWindowsだとgethostnameして、gethostbynameすればとれたんだけど、
同じことをやると127.0.0.1しか取れない。
なんかうまい手ない?
0208デフォルトの名無しさん
NGNGioctlでSIOCGIFCONFしる。
man 7 netdevice参照のこと。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG穴兄弟\ 213 212
\ 母↑ /本体?
好き? \ │/
207←───208←────209
/↑ 愛してる ↑
/ │ │
/ 彼氏│ 嫉妬 │
娘/ 210─────┘
214
複雑だな…
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNGネットワークになっているね
0219デフォルトの名無しさん
NGNGUDPでデータ転送をすることにして、
受け側が送り側によって送られたデータを処理し切れなくなると
バッファが満タンになったりして宜しくない状態になる気がするんですが、
そこのところは世の中ではどうなってるんでしょうか?
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGネットワークプログラミングの1番の基礎ってなんですか?Hello Worldてきな
ものありませんか?
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGHello worldを送るプログラムと受けるプログラムを書いてみれば。
0225デフォルトの名無しさん
NGNG俺の一番最初のネットワークプログラミングは、HTTP受信だったが。
ようはそういうことだろ>Hello World
0226デフォルトの名無しさん
NGNGHTTP/1.1はちょっとでかい。
0227デフォルトの名無しさん
NGNGいまいちわからなです。
HTTP受信ってなんですか?
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG1000ページぐらいのPDF。サイズも8M近くあるが、ただでDL可能。
ttp://www-6.ibm.com/jp/support/redbooks/redirect/dblue_rb_red_tcp-GG88-4005-01.html
0230デフォルトの名無しさん
NGNGダウンロードした。結構感動した。
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGハロワくらいのレベルっつーと、確かに TCP echo だわな。
023323才
NGNG0234デフォルトの名無しさん
NGNG0235ミナツキ サヤ ◆SAYAC2HJWE
NGNG0236デフォルトの名無しさん
NGNGftp.exeを実行する。
ftp -s:filename
みたいに。お手軽お手軽
0237デフォルトの名無しさん
NGNGMFCのCFtpConnectionに相当するモノも無いみたいだね。
面倒だけど、Socketを使って自作するしか。
0238デフォルトの名無しさん
NGNGUDPって、1つのデータを受信中に別のデータが送られてきても待ってくれるんでしょうか?
それとも、その送られてきた時点で受け取れなかったら破棄されるんでしょうか?
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGそれは困るんですけど、どうにかなりませんか?
0241デフォルトの名無しさん
NGNGsetsockopt()で受信バッファを大きくする。
でも、どっかで消えてしまう事は必ずあるよ。
0242デフォルトの名無しさん
NGNG自分でデータの連結や、再送処理をしろ
それが嫌なら、TCP/IPを使え
いったい何のためのUDPだと思ってるんだと小(ry
0243デフォルトの名無しさん
NGNG寝る前に>>220を100回唱えろよ。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNGUDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
中略
UDPを使うならお前が制御せよ。いやならTCPを使え。
UDPを使うならお前が制御せよ。いやならTCPを使え。
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGXPのAPIを使わずにUPnPでポートを開く方法
意外と簡単っぽいね
0250デフォルトの名無しさん
NGNGそれよりはWinInet系のAPIを使う方が楽だろう。
まあ細かいことやりたければSocket直叩きだがナ。
ぐぐればC#によるFTPクライアント実装の例は簡単に見つかるよ。
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGATL/MFC には、SMTPを簡単に扱える CSMTPConnection クラスがありますが、
これを用いてメールを送信する場合、サーバが返す値(エラーコード)を取得するには
どうしたらいいでしょうか?
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGVCにはソースついてるんだから CSMTPConnectionクラスのソースみればわかるだろ?
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGクラス化しようがしまいが気にしないわけにはいかんだろ。
0258デフォルトの名無しさん
NGNGつか、CSMTPConnectionなんて、漏れの持ってるヘルプには載ってないorz
VisualStudio6.0じゃそろそろダメか?
0259デフォルトの名無しさん
NGNGのことかな。
CSMTPConnection::GetLastCommandResponse
CSMTPConnection::GetLastCommandResponseCode
とか、なんかそのものズバリっぽいものがある気がするのだが気のせいか。
>>258
VC7(.NET)以降はCRT、MFC、ATLあたりが大幅に変わってるから、
新しいの買うにしてもVC6は手放さない方がいいよ。デフォのCランタイムが
MSVCRT.DLLじゃなくてMSVCR70.DLLになっちゃってる。これはなにげに
嫌でしょう。
俺はVC6のincludeとlibだけ取っておいて、VC7のcl使ったりという
邪道な真似をやったりもするけど。
0261デフォルトの名無しさん
NGNGMFCのafxsock.hの中の記述を勝手に書き換えても大丈夫でしょうか?
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGサンプルで接続要求待ちに無限ループを使ってるみたいなんですが、これ、いいんでしょうか?
なんか、力技に思えてしょうがないんですが。
0264デフォルトの名無しさん
NGNGstdafx.hの中に#include <winsock2.h>を書く。
(VS6.0しかしらんけど)
0265263
NGNGやはり、C&WTLにしとけばよかったと、微妙に
0266デフォルトの名無しさん
NGNGループ終了は例外処理を使ってるみたいだね。
簡単に実装できる方法だし、サンプルでこれを認めているんなら使わない手は無いと思うけどなぁ。
0267266
NGNG大分見慣れてきたからそうは思わないんだけど、俺もJavaでこれ見たときはテンション下がったよ。
ロジックで解決しないコードって何だよって(←この考え方自体、既に古いかもしれんが)。
0268266
NGNGてか、三つもレス消費するなや俺……。
0269デフォルトの名無しさん
NGNGサーバアプリだと無問題だと思うが。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNGprivate string SockRecv(Socket tmpS)
{
int bytes;
byte[] RecvBuff = new byte[256];
MemoryStream RecvMsg = new MemoryStream();
Socket pop3 = tmpS;
do
{
bytes = pop3.Receive(RecvBuff,RecvBuff.Length,SocketFlags.None);
RecvMsg.Write(RecvBuff,0,bytes);
}
while(pop3.Poll(100000,SelectMode.SelectRead));
return Encoding.ASCII.GetString(RecvMsg.ToArray());
}
0273デフォルトの名無しさん
NGNGRecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);
//USERコマンドの送信
SendComd = "USER " + User + "\r\n";
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);
//PASSコマンドの送信
SendComd = "PASS " + Passwd + "\r\n";
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);
0274デフォルトの名無しさん
NGNGSendComd = "STAT\r\n";
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);
//STATコマンドの結果からメールの数を抽出
MailCount = int.Parse(RecvComd.Split(' ')[1]);
if(MailCount != 0)
{
//RETRコマンドの送信
for(int count = 1; count <= MailCount; count++)
{
SendComd = "RETR " + count + "\r\n";
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(SendComd);
Console.WriteLine(RecvComd);
}
}
0275デフォルトの名無しさん
NGNGSendComd = "QUIT\r\n";
SendBuff = Encoding.ASCII.GetBytes(SendComd);
pop3.Send(SendBuff,SendBuff.Length,SocketFlags.None);
RecvComd = SockRecv(pop3);
Console.WriteLine(RecvComd);
pop3.Shutdown(SocketShutdown.Both);
pop3.Close();
return true;
0276デフォルトの名無しさん
NGNGquitコマンドを実行した直後あたりでプログラム
が固まるのですが原因は何なのでしょうか?
0277デフォルトの名無しさん
NGNGお前のためにこんな糞コードを読み通せと?
0278デフォルトの名無しさん
NGNGThread分けるかするものなのだが・・・
返ってくる保障が無いんだし、帰ってこなけりゃ固まるよ。
0279デフォルトの名無しさん
NGNGありがとうございます
ネットワークプログラミングをするの始めたばかりなんで・・・
こんな厨な私にちょうどいい入門書ないですか?
0280デフォルトの名無しさん
NGNGrecvfromでブロックしているときにsocketファイルが削除されたら
戻るようにできるでしょうか。
0281デフォルトの名無しさん
NGNGPunchngHoleUDPについてなのですが
クライアントのルーターのポートを空けなくても
Winsockの送信元ポートを設定し、サーバーへアクセスすると
自動的にルーターでポートが空くので、その穴を別のポートを設定していないクライアントが利用するって技術ですよね?
で、どうもサイト見る限り、Winsockで設定したクライアントのポート+1の番号のポートがルーターに開けられるような事が書いてたのですが・・・
これは本当ですか?ルーターの仕様として決まってるとはあまり思えないんですが・・・
0282デフォルトの名無しさん
NGNGNATはどれくらいの時間サーバーを記憶してくれるんでしょうか?
サーバーへコマンドを送信してから1時間後くらいにサーバーからクライアントへコマンドを返すようなのを作りたいのですが・・・・
0283デフォルトの名無しさん
NGNGそのサイト教えれ。
>>282
実装次第なのでなんとも。
設定すればなんぼでも出来るだろうが、
デフォルトで1時間はいくら何でも期待できないだろう。
ちなみにうちの場合は10分。
5分間隔くらいでハートビート送ってくれないとな〜。
0284281
NGNGhttp://www.ht.sfc.keio.ac.jp/~suno/term/2003s/sunet.ppt
これです。
図を見る限りクライアントのルーターのポートが1つ増えてます。
0285デフォルトの名無しさん
NGNGこの例だけで、>>281のように考えるのはどうかと思います。
ルータを通したローカルの複数のクライアントが同じポートを使用としたときに、
ルータは皆別々なポートにマッピングするべきなので。
0287263
NGNGorz;
}
0289デフォルトの名無しさん
NGNGくだらない書き込みをするなよ。
0290デフォルトの名無しさん
NGNGくだらない書き込みをするなよ。
0291デフォルトの名無しさん
NGNGくだらない書き込みをするなよ。
0292デフォルトの名無しさん
NGNGくだらない書き込みをするなよ。
0293デフォルトの名無しさん
NGNGくだらない書き込みをするなよ。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG送信元のPortを鯖側で把握する事は可能だが
それはあくまであちらで設定されたWinsockのポートであって
ルーターでマッピングされたPortではない。
よって、鯖は相手のルーターのマッピングされたPortは知る事は出来ない
なので現状PunchingHoleUDPをWinsockベースで利用する事は不可能
生ソケット使いな
0296デフォルトの名無しさん
NGNGクライアントが[srcip:srcport -> dstip:dstport]でUDPを発射するだろ。
ルータが[routerip:routerport -> dstip:dstpor]にすり替えるだろ。
サーバはrouterip:routerportをとれるやん。
0297デフォルトの名無しさん
NGNG俺はTCPを7500秒、UDPを60秒にしてある。
データの流れる方向が逆だが、そうじゃないとゲームホストをしたときに、
他の端末から来たGameSpyサーバPingのUDPでNATテーブルが簡単に埋まりつくすから。
まあ内側にホスト立てるとかそういうのは置いといてだw
0298デフォルトの名無しさん
NGNGRecvFrom()の5つ目の引数に入る(struct sockaddr_in *)&hoge
に格納されるポートはルーターのポートなのでしょうか?
0299デフォルトの名無しさん
NGNG他に良い方法ありますか?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGアホか?
考えれば分かるだろ。
0303デフォルトの名無しさん
NGNG考えたけど分かりません。>>299は頭悪そうだから何考えてるか見当もつかん。
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNGそういう意味ではテキストで送るのは良いわけだが
その場合固定長バッファは危険かもな
0307デフォルトの名無しさん
NGNG俺は>>299読んだだけじゃ「バイナリ」とは判断がつかないな。
「数値を文字列に変換する関数を使って」という頭悪そうな表現は
ともかく、文字列と言ってるからにはテキストなんだろうし、
多分昔のCOBOLの帳票データみたいな、スペース産めされた
固定長のフォーマットなんだろ?
俺も>>300に同意だね。
0308デフォルトの名無しさん
NGNG0309299
NGNG0310デフォルトの名無しさん
NGNGそれより先に、>>299 で述べた方法のマズいと思っている点を述べよ。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG>305 もバイナリじゃなくてテキストだと思って書いてるはず。もちつけ。
>309
とりあえず、一般的過ぎて結局何をどうやってどういうデータにしてるかが
よくわかんね、というのはあるかもしれない。
>311
>263 には申し訳ないが、同意せざるを得ないということを否定しがたい。
0314デフォルトの名無しさん
NGNG> 時間を食ってしまうのではないか
などという問題の立て方は限りなく無駄だ。悩むのは計測してボトルネックが
明らかになってからにしなはれ。
一般論としては、Xのようにバイナリの形でやりとりするプロトコルも
あるけれど、ホスト毎のハードの差を吸収するにはテキスト化するのは
現実的で無難な解だと思われ。
human readableなデータはデバグしやすいという多大な利点があるし
単純な整数以外の型が絡んだりすると、やってらんないぞ。
興味あるんなら
RPCなどで使われてるXDR(External Representation Standard, RFC1014)ってのを
調べてみ。
0316デフォルトの名無しさん
NGNGWinsockでUDPを使ってファイルの転送をするプログラムを組もうと思うのですが
RecvFrom()でファイルを受信する場合、どの型を使うと良いのでしょうか?
Fileの始めの位置に印をつけるので、それを取り除くだけの処理をした後
Fileに保存するようにしたいのですが・・・
やはり、char型の配列でしょうか?
ちなみに印とは、分割してFileを受信するので順序良く並べる必要があるので、その番号を入れようと思ってます。
0317デフォルトの名無しさん
NGNGint型のほうが高速なのでな
0318デフォルトの名無しさん
NGNGまあ、表現形式を切り替えられるようなプログラミングをすることですな。
>>316
RecvFrom()では、byte列を扱うんだから、charの配列でいいんじゃない?
0〜255じゃ小さければ、2 byte使って、(data[0] << 8) & data[1]すりゃいいし。
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGそうそう。何でTCPで実装しないのかと小(ry
0321デフォルトの名無しさん
NGNGもしスンナリ転送できた場合、TCPより高速化しないか?
毎度毎度確認するTCPより、転送出来なかった所だけ最後に転送する方法にしたらかなり高速化するぞ
0322デフォルトの名無しさん
NGNGSkypeとかもそうだけど、今はUDPがトレンドだよねぇ・・・
NAT超えについての解決策が無いTCPだと正直辛い。
回線が高速化した分だけUDPがどんどん有利になってくる。
TCPの方が絶対的に良いと言うのはもう古い話
0323デフォルトの名無しさん
NGNG> もしスンナリ転送できた場合、TCPより高速化しないか?
スンナリ転送できなかった時、劇遅にならないためには、
それなりのスキルがいる。
0324デフォルトの名無しさん
NGNGftpのデータセッションのフリをする手もあるけどな。
実装にもよるから100%うまくはいかんだろうけど。
0325デフォルトの名無しさん
NGNGある特定のIPアドレスのある特定ポートが
開いているかどうかってどうやって調べるんですが?
まっさらのWinXPで調べるにはやはりtelnetしかないのでしょうか?
スレ違いな気がしますが他に適当な所も見つからないので
どなたか教えてくださいませ。
0326デフォルトの名無しさん
NGNGTCPのNAT越えしる。
0327デフォルトの名無しさん
NGNG多少スレ違いな気もするが、nmap等のポートスキャナを導入汁。
自分のIPアドレスに対してなら ttp://scan.sygatetech.com/ こういったサービスが
いくつかあるのでそういうのを探して使うのもありだが
0328デフォルトの名無しさん
NGNGアドバイスありがとうございます。
参考にさせていただきます!
0329デフォルトの名無しさん
NGNGどうもWinsockとSocketは同期しないみたいなのですが
どうしたら出来るようになるのか教えてくださいませんか?
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGこの質問に答えられたら、その質問に答えてあげよう。
なんかプログラムを実行したら変な感じになるんですけど、
どうしたらちゃんと動くようになるのか教えてくださいませんか?
0332デフォルトの名無しさん
NGNG変な感じになる場所にブレークポイントを設定して
その一文をもう一度調べてみる。
0333デフォルトの名無しさん
NGNG普通にやってできるよ。
0334デフォルトの名無しさん
NGNG>>329
同期してないようにみえる場所をもう一度調べてみる。
0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG同期するように自分で通信プロトコルを作る。
0337デフォルトの名無しさん
NGNG自分で作る必要がありますかね。
0338デフォルトの名無しさん
NGNG自分の目的に特化させたいならそりゃ自作するしかないでしょ。
0339デフォルトの名無しさん
NGNG意地悪しないで教えてください。
0340デフォルトの名無しさん
NGNGそれが意地悪に見えてしまう君は一体何様ですか?
0341デフォルトの名無しさん
NGNGお客様です。
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG通報しました
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG君がprintfをプリントフと発音しているなら別にいいんじゃないの。
プリントエフと発音しているんだったら、エイチトゥーエヌエスと読むべきだと思う。
0347デフォルトの名無しさん
NGNGhtonsがエイチトゥーエヌエスなら、
printfはピーアールアイエヌティーエフと呼んで下さい
0348デフォルトの名無しさん
NGNGエイチティーオーエヌエスとは読んでいないので
その提案には賛同できません
0349デフォルトの名無しさん
NGNGじゃあ
htonsはトン
printfはリン
ということで
0350デフォルトの名無しさん
NGNG> >346
> htonsがエイチトゥーエヌエスなら、
> printfはピーアールアイエヌティーエフと呼んで下さい
h(略) to n(略) s(略)
print f(略)
だ。
0351デフォルトの名無しさん
NGNG同じだ。
エイチトゥーエヌエスと読む時もあるけど。
0352デフォルトの名無しさん
NGNGstdio.hをスタジオヘッダと読んでる人
↓
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNGすとぅどあいおうって読んでる
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNG上司にatoi→あとい itoa→いとあ
って発音する香具師が居るんだがどうにかならんのか・・・
0357スレ違いすまん
NGNG0358デフォルトの名無しさん
NGNGcnt → count
atoi → あとい
itoa → いとあ
str → ストリップ
0359デフォルトの名無しさん
NGNGcnt → かうんと
atoi → えー とぅー あい
itoa → あい とぅー えー
str → すとあ
strtol → すとあ とぅー える
char → きゃら (相手が ちゃー という場合は ちゃー)
0360デフォルトの名無しさん
NGNGinet_ntoa
inet_ntop
inet_lnaof
in_addr
sockaddr_in
getnetent
SIOCSIFADDR
辺りが適当かと。
0361デフォルトの名無しさん
NGNGヒートンズ
だろ!!??
0362デフォルトの名無しさん
NGNG当然dllはドルル
0363デフォルトの名無しさん
NGNGinet_ntop あいねっと えぬとぅーぴー
inet_lnaof あいねっと えるえぬえーおーえふ
in_addr いん あだー
sockaddr_in そっくあだー いん
getnetent げっとねっとえんと
げっとねっとえんと、って韻を踏んでて響きがいいな。
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNG>>363と↓だけ違う
in_addr いん あどれ
sockaddr_in そっく あどれ いん
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNGワロタよ。
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNGそんなことない。
0370デフォルトの名無しさん
NGNGそんなことない。
0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNGUPnP通信の実験してるリンクがあったと思うのですが
失ってしまいました。
どなたか心当たりないでしょうか?
0373デフォルトの名無しさん
NGNGすまんかった
0374デフォルトの名無しさん
NGNGWSAAsyncSelectを使用していて
FD_ACCEPTを受け取ったら
for(iConnect = 0;talk[iConnect]!=INVALID_SOCKET;iConnect++);
talk[iConnect] = accept(sock,(LPSOCKADDR)&client, &namelen);
の処理をして、SOCKET型のtalk配列のあいてるところで接続確立してるんですが
FD_READを受け取ったときにtalk配列の何番で、つまりどのソケットディスクリプタで
recvをしたらよいかを調べる方法がわかりません。
どうかお力添えをお願いします。
0375デフォルトの名無しさん
NGNG0376374
NGNGWPARAMでわかるんですか!
ぜんぜん気づきませんでした。
ありがとうございました。
0377374
NGNG0378デフォルトの名無しさん
NGNGちょっとまって〜
同じ質問しそうなので
どう解決したのか教えてください。
WPARAMにはパケしかないと思
0379378
NGNGacceptの引数にちゃっかり入れられてました。
(bindと同じやつ入れてた)
orz
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNGsendtoをする前に受信バッファーに残ってる全てのデータを取り除きたいのですが
どのようにしたらいいでしょうか?
0382381
NGNGブロードキャストのパケットを受信する方法について
質問があります。
手違いでデバイスをクラスDのIPアドレスに設定して
しまったのですが、このデバイスが送信するブロード
キャストを受信するアプリを作成しています。
Winsockを使用した自作のアプリケーションでは取得できず、
WinPcapを使用したアプリケーション(Etherreal)では
取得できました。
WinsockではクラスA〜C以外のIPアドレスからのパケットは
取得することができないのでしょうか?
0383382
NGNG0384名無し@沢村
NGNG銀行の口座にこっそりアクセスするには、どうすればいいんですか?
自分の口座の残高を増やす操作はどうやるんですか?
0385名無し@沢村
NGNG銀行の自分の口座にアクセスするには、インターネットバンキングを使えばいいから簡単ですね。
では残高を増やす操作はどうやるんですか?
インターネットバンキングでアクセスして、残高の末尾に0をたくさん書き込めばいいんですか?
0386名無し@沢村
NGNG0387test
NGNG0388デフォルトの名無しさん
NGNGsendtoをする前に受信バッファーに残ってる全てのデータを取り除きたいのですが
どのようにしたらいいでしょうか?
0389デフォルトの名無しさん
NGNG無理
送信を省略できるようにしたいなら、sendtoするより前でそういう処理を入れれ
0390デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNG既にバッファーにあるデータのバイト数がわかれば
その分recvfromで受信でいいんですが・・
普通にrecvfromの戻りが0になるまでひたすら受信でもいいっぽいですかね?
0394デフォルトの名無しさん
NGNG他人の質問をコピペして釣ろうとしているお前が死ね
0395デフォルトの名無しさん
NGNG0になるまでじゃなくて、エラーになるまで。
で、エラーの詳細を見て、ブロックする場合のエラーコードの時
(EAGAINとかWSAEWOULDBLOCKとか)のみ、その後の処理を
するようにすればOKじゃないか?
もちろん、non-blockingにしないとデータがなくなった時点で
ブロックしてしまうんで、non-blockingは必須になる。
0396デフォルトの名無しさん
NGNGすみません、かなり初歩的なことを聞きますが
non-blockingはどうやって行うのでしょうか?
0397デフォルトの名無しさん
NGNGWinsockでググれ。
0398デフォルトの名無しさん
NGNGすみません、ググりましたが540000件も出てきてさっぱりわかりません。
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNGshutdownで無効にするってのはダメかい?
0402デフォルトの名無しさん
NGNGPCの電源を切るのはいくらなんでもまずいです。
0403デフォルトの名無しさん
NGNG久しぶりに「くすっ」くらいは笑えたレス。
0404デフォルトの名無しさん
NGNG無知な香具師はレスしないでくれ。
ここはお前みたいな厨房がくるところではない。
0405デフォルトの名無しさん
NGNGで、どうすればいいんでしょうか。
具体的に教えてください。
0406デフォルトの名無しさん
NGNGネタにマジレスすんなと
0407デフォルトの名無しさん
NGNG402に書いてあるのは試した?
0408デフォルトの名無しさん
NGNGすいません、仰っている意味が良くわからないのですが、
電源切ってしまったらプロセスが終了してしまいませんか?
どうしたんすか?
僕 なんかまずいことを…
0409デフォルトの名無しさん
NGNG先方から送られて、まだこっちに着いていない分のパケット(そのうち着く)はどう処理するつもり?
応答毎にシーケンス番号とか付けて、捨てるべきもの、処理すべきものを管理しなきゃダメだと思うよ。
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG> sendtoをする前に受信バッファーに残ってる全てのデータを取り除きたいのですが
この考え(特に「全部」)が猛烈にバッドセンス。
捨てたいパケット(UDP)があるなら、recvfrom()で受け取って捨てればいい。
人に聞くまでもないこと。
ところがあなたは何か「銀の弾丸」のようなものが存在すると思っている。
しかしそれはネットワークプログラミング初心者にありがちな誤解だ。
何を持って「全て」というのか。ネットワークには神の視点は存在しない。
0412デフォルトの名無しさん
NGNG=======終了=======
0413デフォルトの名無しさん
NGNGこっちが要求したら向こうから返答が返って来るので、向こうからいきなりくることはないんで、
ちなみに、向こうが何らかの理由で遅れて送信することがあるばあい、こっちはタイムアウトで再度要求するので
この辺りで以前に要求したデータが返って来る恐れがあるので、受信バッファーを空にしときたいんですよ
>>411
そんな幼稚な返答は望んでいないから消えていいよお前
0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNG褒められたもんじゃないぞ。
それに、>>411の表現はともかく内容は間違っちゃいない。
空にしておきたいと言うが、空にしたあとに到着したらどうする?
無いと割り切って組むのもいいが、100%無いとは言い切れんぞ。
>>413のような仕組みなら>>409の方法で組むことをお勧めする。
0417デフォルトの名無しさん
NGNG「で」が多いよ。
受信バッファを空にした後に「以前に要求したデータ」が届いたらどうするんだ?
要求再送分の応答を受け取った後に「以前に要求したデータ」が届いたらどうするんだ?
ちゃんとシーケンス管理すれば済む問題でないの?
0418417
NGNG0419デフォルトの名無しさん
NGNG< 無いと割り切って組むのは、100%無いとは言い切れないからよくない。
0420デフォルトの名無しさん
NGNGそれを>>413が理解できないのは、>>411の言うように考えているから。
「全て捨てて空にしたい」
→「ネットワークプログラミングの性質上出来ません」
0421デフォルトの名無しさん
NGNG要求に番号をつけておいて、返答にも要求と同じ番号をつける。
で、要求を送って返答を待つときには要求した番号以外のついたパケットを受信したら捨てる、
って風にすればよいわけ。前回の要求への返事なら、番号が違うから捨てられる。
あと態度悪いよ。
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGせめてTCP/IPスタックを自作しろって言えよ。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGTCP/IPによるネットワーク構築〈Vol.3〉
―クライアント‐サーバプログラミングとアプリケーション
を洋書で読みたいのですが、同じ本でUNIXバージョン、
BSDバージョン、Windows(WinSock)バージョンと3つに
わかれているのですが、Windows専門の私はWinSock
バージョンでいいのでしょうか?
3冊とも内容的にはいっしょと考えていいのでしょうか?
0430デフォルトの名無しさん
NGNGWinsockはBSD socketと違うところがあるので、
programとその説明が違います。しかしまあほとんど同じです。
0431デフォルトの名無しさん
NGNGWSA系は違うけど。
0432デフォルトの名無しさん
NGNGethereal
http://www.ethereal.com/
UPnP
http://www.upnp.org/
も入れとかないとね。
0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGLinux RedHat9 上で次のようなTCP通信プログラムを作成しました。
クライアント側:
通信先IPアドレスの入力を促す。通信先ポート番号の入力を促す。
通信先に接続。
標準入力からの文字列の入力をネットワークに出力する。
サーバ側:
クライアントからの接続を待つ。接続が確立したら connected 文字列をクライアント側に送信。
クライアント側から受信した文字列を標準出力に出力する。
で、同一ホスト上で動かして
$ server
別端末にて
$ client
IPaddr: 192.168.0.10
port: 10000
tcpdump でパケットを見ようとしたのですがパケットをキャプチャすることができないようです。
プログラムは表面上は望んだとおりの動作をしております。
また client と server を異なるホストで動かすとキャプチャできます。
同一ホスト上でキャプチャするには何か設定等が必要なのでしょうか?
どなたかご教授下さい m(_ _)m
0438デフォルトの名無しさん
NGNG同一ホスト上で動かしているならloopbackに流れてるだろうから
そっちを監視してみな。
0439437
NGNG解決しますた!
> 同一ホスト上で動かしているならloopbackに流れてるだろうから
こういうことだったんですね。
IPアドレス指定してたんで eth0 に流れていると思ってました。
どうもありがとうございます。
0440デフォルトの名無しさん
NGNGVC++ + WinsockのUDPでプログラミングしてるのですが
サーバーでクライアント側のルーターでマッピングされたポートを知りたいのですが
どうすれば良いのでしょうか?
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNGPC自身のポート番号のことなら、通信データの中身に埋め込んで送ればよいかと
0443デフォルトの名無しさん
NGNGで受信すれば取れないか?
使うのと言えばスレで散々既出のPunching Hole UDPとSTUNくらいだが…
そもそもクライアントはサーバーと違ってポートなんぞ知る必要ないからな
0444デフォルトの名無しさん
NGNG受ける(待つ)側は特定できるけど。
0445デフォルトの名無しさん
NGNGそれじゃあPunchingHoleUDPが実装出来ないジャン
クライアント側が把握しているのはあくまでアプリケーションが使用するポートであって
ルーターがマッピングするポートはクライアント側にも判らんし
0446デフォルトの名無しさん
NGNG内部のどこにもってくかだから送信するときは関係ない。
0447質問野郎
NGNGsendするプログラムをパラレル実行するとrecvする側がデータ
を取りこぼすことがあります。
Windows XPからsendする場合、10パラレルでも宛先ホストは
すべてデータを受信できますが、AIXからsendすると、10個に
2つ程度、宛先ホストでおかしなデータを受け取ります。
send側もrecv側も同期型のTCPストリームソケットにしている
ので、sendは宛先からのACKを受け取るまでブロックすると
思っていたのですが、受信側の能力を上回ってsendを最後
まで実行してしまっているようです。
AIX側でTCP_NODELAYを設定し、sendとsendの間に1ミリ秒の
sleepをはさむと10パラレルで転送できるようになりました。
このような場合、他に解決方法はあるのでしょうか。
0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0450質問野郎
NGNGパラレルはスレッドではなく、プログラムを同時に10個起動した場合です。
Windows は start ***.exe、AIX は *** & のような形で10プロセス起動してます。
0451デフォルトの名無しさん
NGNGこれはちと違うぞ。
sendは送信バッファがいっぱいになるまで、ブロックしない。
ACKとかの手続きはアプリケーションの関与しないところで
勝手にやってるだけ。
ちょっと気になるのが、recv時に受け取れるだけ受け取って
余った分を捨ててたりはしないよな?
まぁそういう状態だったら、おかしなデータ以後は全部
ぐちゃぐちゃになるから分かるか…。
0452デフォルトの名無しさん
NGNGストリーム型のsocketでそんなことが起きるなら、大抵の場合447さんの
プログラムにバグがあるので、それを直すのが普通だと思います。
stream 型ソケットの場合、
send で送っているデータ区切りと、recv が読み込むデータ区切りには
一致しないのが普通ということには配慮していますよね。
0453デフォルトの名無しさん
NGNGあれ流行ってんの?
俺はやってるけど。
0454デフォルトの名無しさん
NGNG受信側「10バイト受け取ったぜ!」←実は6バイトしか取れてない
送信側「また10バイト送ったぜ!」
受信側「・・・先頭に変な4バイトついてるよー(つд`)ぅゎ-ン」
0455デフォルトの名無しさん
NGNGメールを送信する簡易的なプログラムです。
0456デフォルトの名無しさん
NGNGそのまんまの内容
0457デフォルトの名無しさん
NGNGレスありがとうございます。
しかし、自分自身パイプというものがわかっておりません。
どのような書籍をみれば書いてあるでしょうか。
0458デフォルトの名無しさん
NGNGOS依存の話になるから
WinならMSDNでCreatePipeなどで検索
Unix系なら"Unix パイプ"などで検索すれば
充分情報あると思うよ
0459デフォルトの名無しさん
NGNGありがとうございました。
たくさんincludeしているファイルのソースに問題ありそうなのでもう少し
調べてみます。
0460デフォルトの名無しさん
NGNGsendしようとしたときに既にconnectionが切れてたんだろ。
別にEPIPEはいわゆるIPCの「パイプ」のみで起きるエラーじゃないよ。
0461デフォルトの名無しさん
NGNG, - ' ゙ `` ‐ 、_,,,,,
,r' /=ミ
/ 彡ll',''´
. / 彡lll
!-- .、 ,、、、、,,, 彡lノ
l,,,,,__ / ___ 'r''゙ヽ
. |`゙'' ./ `'゙'''" .〉,l |
|. ,' //
. ',. ,' , r'
. ゙, ゙'ー ‐` l |
゙、''゙ ,,、二''‐ ノ l、
''''''''7'ヽ ''' / /`〉`゙T''''''''''
l ` 、,,,,、- ' " / /.| |
. | | .l i / ./ | |
| | | l / ./ .| |
. | | | l / / | |
| | | ', / / l .l
【ゴールデンレス】
このレスを見た人はコピペでもいいので
10分以内に3つのスレへ貼り付けてください。
そうすれば14日後好きな人から告白されるわ宝くじは当たるわ
出世しまくるわ体の悪い所全部治るわでえらい事です
0462質問野郎(447)
NGNG>>451
よく調べてみたら、ACKは確かにsendで必ず返ってくるわけではないようです。
だからTCP_NODELAYを設定するとうまくいくのかもしれません。
recvは受信できたバイト数を戻しますので、ヘッダで受け取ったレングス分の
受信が完了するまでループしています。sendも同様です。
>>452
バイナリデータを送信してるので、データ区切りというものはつけていません。
send側プログラムで、送信に対する相手からの応答をrecvする処理を間にはさめば
うまく動くのですが、sendのみを繰り返すとAIXに限りうまくいかないのです。
状況としては454さんの書かれているようなことが起こっています。
聞きたかったのは、sendでデータを送りっぱなしにする場合にTCP_NODELAYを
設定する解決方法が正しいのかどうか、ということだったのですが、
このような状況に遭遇された方はいないようですね。
プログラムのバグも含めていろいろ調べてみます。ありがとうございました。
0463質問野郎(447)
NGNG454さんの書いている状況とはちょっと違いました。
前データの残りを後の受信処理で受けてるわけではなく、受信処理自体
は成立しています。但しデータの欠損があります。
TCP_NODELAYを設定せずに、sendとsendの間にACK遅延に相当する200ミリ秒
の遅延を入れても正常に動作します。
また、AIXからWindowsやLInuxへsendする場合はTCP_NODELAYやsleepを
入れなくても正常に動作します。
CPU負荷の高い宛先ホストに、10パラレル転送した場合のみデータ欠損が発生
している状態で、シングル実行や2〜3パラレルでは発生しません。
0464デフォルトの名無しさん
NGNG送るだけだからエラーチェックしていないなんて事は無いよね?
0465デフォルトの名無しさん
NGNG> バイナリデータを送信してるので、データ区切りというものはつけていません。
バイナリデータでも、データ区切りつけていいべ。
> うまく動くのですが、sendのみを繰り返すとAIXに限りうまくいかないのです。
特定の環境でしかうまく動かないプログラムなんでしょうね。
> 状況としては454さんの書かれているようなことが起こっています。
> 聞きたかったのは、sendでデータを送りっぱなしにする場合にTCP_NODELAYを
> 設定する解決方法が正しいのかどうか、ということだったのですが、
あなたの起こしている障害の解決方法としては正しくないです。
緩和はされるかも知れませんが。
0466デフォルトの名無しさん
NGNG他にはTCP、つまりSOCK_STREAMなのに、
SOCK_SEQPACKETのようなプログラミングしている可能性があるべ。
TCPがpacket streamじゃなくてbyte streamだってことを理解しているのかな?
0467デフォルトの名無しさん
NGNG初心者がTCP使う時は、sendやrecv使うんじゃなくて、
fwrite, fread使った方がいいよ。fdopen(3)してね。
packet size header使えば簡単だし。
recvで二つのpacket(だと初心者が考えている)dataを
まとめて受ける可能性だってあるわけだし。
0468質問野郎(447)
NGNG別の方法を利用すればよいとのレス、ありがとうございます。
ただ、>>467 でパケット2つ分を受け取る可能性があるそうですが、
以下のようにrecvで必要なバイト数ずつ読み取れば、まとめてデータ
を受信しようが問題ないように思うのですが。
固定長ヘッダのレングス分sendループ ---> 固定長ヘッダのレングス分recvループ
ヘッダで送ったデータ長分sendループ ---> ヘッダで受信したデータ長分recvループ
プログラム内では「固定長ヘッダ+データ」をひとつのまとまりとして
扱っています。固定長ヘッダにはシーケンス番号をつけており、処理も
この順序に依存します。SOCK_STREAMは順序性が維持されるため問題ない
と判断しましたが、SOCK_SEQPACKETを利用する方が適切なのでしょうか?
また、fdopen(3)を利用すれば回避できるものでしょうか。あるいは、
バグがないように書けば現在のようにsendばかりのプログラムと
recvばかりのプログラムでも問題ないのでしょうか。
0469質問野郎(447)
NGNGレス見落としていました。ありがとうございます。
エラーチェックですが、sendで戻り値がSOCKET_ERRORの場合だけチェックしています。
SIGPIPEをalarmでハンドリングできるようにしているので、sendの戻り値が
0 の場合は特に何もしていないのですが、チェックすべきでしょうか。
固定長ヘッダの送信も同じような形で行っています。
ヘッダで送信するデータ長はビッグエンディアンの並びになるよう統一
しています。
nSendLength = 0;
while(nSendLength<BuffLength)
{
nRc = send(sock, pBuffer+nSendLength, BuffLength-nSendLength, 0);
if(SOCKET_ERROR == nRc)
{
return errno;
}
nSendLength+=nRc;
}
0470デフォルトの名無しさん
NGNGunsigned char data[MAX_DATA_SIZE];
uint32 size;
size_t to_read = 4;
size_t len;
unsigned char* ptr = (unsigned char*) &size;
while (to_read > 0 && (len = recv(s, ptr, to_read, 0) > 0) ptr += len, to_read -= len;
to_read = ntohl(size);
ptr = data;
while (to_read > 0 && (len = recv(s, ptr, to_read, 0) > 0) ptr += len, to_raad -= len;
どこかで間違ったデータ長を渡している可能性はありませんか?
あと、
>聞きたかったのは、sendでデータを送りっぱなしにする場合にTCP_NODELAYを
>設定する解決方法が正しいのかどうか、ということだったのですが、
パフォーマンスチューニングの一環としてはありえますが、今回のように
それなりの長さのデータをばーっと送るときにはそもそもあまり有効ではないと思います。
telnetみたいに間歇的に小サイズの送信を行って、かつdelayが許容されないときなんかに使います。
0471質問野郎(447)
NGNGサンプルのご提示、ありがとうございます。
受信側はデータ長だけでなく固定長ヘッダをまとめて受信します。
また、recvの戻り値でもSOCKET_ERRORのチェックをまず行っています。
あとは、サンプルコードで書かれている流れのように
・送受信バッファはunsigned charで確保しており、構造体ではない
・TCPバイトオーダーでデータ長を受信する
・ヘッダとデータはそれぞれ必要レングス分ループする
という処理になっており、>>470さんのいわれる処理と同じような形です。
またデータ長の誤りは考えにくいのです。
これまで、送信側はsend後に相手から受領確認をrecvし、受信側はデータ
recv後に受領確認をsendするような形で何年かプログラムを使ってきました。
もしデータ長が間違っていれば、これまでの運用でプログラム独自のプロトコル
エラーが出ていなければならないのですが、そのようなことはありませんでした。
今回、send-recvの繰り返しで通信速度が遅くなる点につき、送信側はsendのみ、
受信側はrecvのみに徹して速度向上を図ったところ、問題が生じた次第です。
TCP_NODELAYの設定については不適切とのご指摘を多くいただいているので、
プログラムに問題があるとは思うのですが、まだ問題点を見つけられずにおります。
ちなみに送信元はAIX、宛先ホストはOS/390でパラレル実行した場合にのみ問題が起こります。
同じソースでもWindowsからOS/390へ送信した場合や、OS/390からWindowsやAIXへ送信した
場合には問題は起こっておりません。
sendのみ(recvのみ)の通信処理で一般的に考慮すべき点を調べてみるつもりです。
参考になりそうな書籍やWebサイトがあればご紹介いただければ嬉しいです。
よろしくお願いいたします。
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNG漏れもこのケースではサポートに頼るべきかもしれないと思う。
あと、TCP/IP 一般あるいは AIX でのパフォーマンスチューニングに関しては:
http://publib16.boulder.ibm.com/pseries/Ja_JP/aixbman/prftungd/2365a83.htm#idx725
あたりも参考になるような気がします。
0474デフォルトの名無しさん
NGNGこの状況についての確認ですが、
> Windows XPからsendする場合、10パラレルでも宛先ホストは
> すべてデータを受信できますが、AIXからsendすると、10個に
> 2つ程度、宛先ホストでおかしなデータを受け取ります。
接続を10本張って、
送り側、受け側それぞれ独立のプログラムが10個動いている、
ってことでいいですか?
0475質問野郎(447)
NGNGOSを書いてしまうと、恐らくメーカーサポートを勧められると思ってました。
一般的なTCP/IPの仕様でOSに関わりなく何か見落としがあるかと思って質問させて
もらいました。メーカーへの問い合わせは行っていきたいと考えています。
>>473
情報ありがとうございます。
rc.netファイルでtcp_recvspaceを調整して試してみます。
>>474
はい、その通りです。
送信側、受信側は同じプログラムを10個動作させて、別プロセスとしています。
送信側(AIX)から受信側(ホスト)でACCEPTしているポートに接続する単純なものです。
それぞれ別々の10個のポートで接続を貼っています。
ホストではパラレル起動させるために別々のJOB名で同じPGMを動かしています。
もちろんJOBを動かすためのイニシエータも10個用意しております。
0476デフォルトの名無しさん
NGNGデータ欠損って言うけどどういう症状なの?
1. 正常にヘッダ+データを幾つか受ける。
2. データが欠けていて次のヘッダを受けている。
3. 以後、データ区切りが分からなくなり滅茶苦茶。
こう進行するわけ?
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGそれでうまくいっても安心できない状況ですよね。。。
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNGと思ってたら、OS/390 かよ。俺には未知の世界だ…。
通信処理で一般的に考慮すべき点、という話では、典型的なストリーム型とパケット型の混同
による受信側のバグにしか見えないなあ。俺にはね。
>>454 風に書くと、こういうことが起こっているように見える。
送信側「10バイト送ったぜ!」
送信側「また10バイト送ったぜ!」
受信側「10バイトくれ! お、来た来た、10バイト受け取ったぜ!」←実は16バイト受け取ったのに気がついていない
受信側「次の10バイトくれ!・・・先頭の6バイトが足りないよー(つд`)ぅゎ-ン」
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484デフォルトの名無しさん
NGNG>>469を見るとその手の間違いをやっているとも思えん。
全然別の場所にバッファオーバーランをやっているとか?
0485481
NGNGだって >>469 は送信側のコードだし。
受信側は >>470 で別の人がサンプル書いてるけど、本当にこれと全く同じ
ロジックだったら問題はないはずなんだが、元質問者が「同じような形」だ、
と書いてあるだけなので検証できてない。
そうしてるつもりで実はそうなってなかった、ってのがバグなんだからさ。
他の書き込みも一通り目を通したけど、これが原因だった場合と
矛盾している症状はないと思う。
0487デフォルトの名無しさん
NGNG晒すかサポートに電話するかどっちかにしろ
0488デフォルトの名無しさん
NGNGhttp://publib16.boulder.ibm.com/pseries/Ja_JP/aixbman/prftungd/netperf3.htm
もあるけど、、、
0489デフォルトの名無しさん
NGNGクライアントを定義したクラスをvectorで持っており、接続待ちループでクライアントの追加イベントがあった場合、
そのvectorクラスのpush_backを呼び出して、クライアントを追加します。
しかしその場合、メインループでそのvectorクラスのインスタンスを操作している可能性があり、ましてpush_backでメモリの再確保が行われてしまったら、動作がおかしくなると思います。
こういう場合、クライアントの追加はどういう風にするべきなのでしょう?
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGCriticalSection使えば?
0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG0494質問野郎(447)
NGNGみなみなさまのおかげで無事解決いたしました。おっしゃるとおりバグでした。
しかも通信とはまったく関係ないところで・・・本当申し訳ないです。
ホストではJOBLOGに受信内容をHEX PRINTして受信内容を確認していたのですが、
その出力処理がフルワードの受信レングスをハーフワードで解釈しておりまして、
受信は正しくできていたのに内容をレングス分きちっと表示できていないケース
があったような次第です。
追加した処理が正しいか確認するための処理にミスがあったというお粗末な結果
となりました。
いろいろお知恵下さった方々、本当すいませんでした。ごめんなさい。逝きます。
0495質問野郎(447)
NGNG送るデータのレコード長がそれぞれ違ってたので、たまたま10個のPGM中で
長いレコードを扱うものだけおかしかった次第です。すいません。
0496ただ・・・
NGNG0497デフォルトの名無しさん
NGNGベクターかよ。リストじゃダメなの?
ベクター+マルチスレッド+push_*()は、iterator使うと悲惨だよ。
まあ、あらかじめallocate()した分しか使わないと保証があれば別だけど。
0498デフォルトの名無しさん
NGNGあのなあ、無視されるのも辛いだろうからあえて言わせて貰うが、
「氏ねや!」
0499デフォルトの名無しさん
NGNGリストかどうはカンケーネーヨ
0500デフォルトの名無しさん
NGNG他人を許せる人になろうよ
0501デフォルトの名無しさん
NGNG私なら別に登録キューを用意して、接続待ちループの追加イベントでは
そのキューに追加するだけ、実際のvectorへの追加はメインループ内の
安全な場所でlook inにするかな。もちろん登録キューの操作はモニタなり
Mutexなりで安全に。
0502デフォルトの名無しさん
NGNGいや関係あるんじゃないか?
「追加時のメモリの再配置」はおこらんでしょlistなら。
ロックが必要な箇所を減らせる可能性はあるよね。
0503名無しさん@お腹いっぱい。
NGNGNICにケーブルが刺さっていないような場合でもMACアドレスを取得したいんだけど。
最悪、ipconfig /allした結果を使おうかと思うのだが。。。
0504名無しさん@お腹いっぱい。
NGNGNICにケーブルが刺さっていないような場合でもMACアドレスを取得したいんだけど。
最悪、ipconfig /allした結果を使おうかと思うのだが。。。
0505名無しさん@お腹いっぱい。
NGNGNICにケーブルが刺さっていないような場合でもMACアドレスを取得したいんだけど。
最悪、ipconfig /allした結果を使おうかと思うのだが。。。
0506名無しさん@お腹いっぱい。
NGNGNICにケーブルが刺さっていないような場合でもMACアドレスを取得したいんだけど。
最悪、ipconfig /allした結果を使おうかと思うのだが。。。
0507あひゃっ
NGNGconnectメソッドから1分以上応答がありません。
接続タイムアウト時間(即時タイムアウト等)を任意で設定したいのですが設定方法がわかりません。
どなたかご存知の方教えていただけないでしょうか?
環境は、SunEWS + Solaris8です。
0508デフォルトの名無しさん
NGNGMSDNをiphelperで引いて味噌。(iphelper.lib)
0509デフォルトの名無しさん
NGNGゲラゲラゲラ
厨丸出しだな(藁
厨房はMSDNで ip helper api を検索しやがれ。
0510デフォルトの名無しさん
NGNG少なくとも、お前みたいな足りんやつはやらないほうがいいな。
0511名無しさん@お腹いっぱい。
NGNGNICにケーブルが刺さっていないような場合でもMACアドレスを取得したいんだけど。
最悪、ipconfig /allした結果を使おうかと思うのだが。。。
0512名無しさん@お腹いっぱい。
NGNG0514デフォルトの名無しさん
NGNG0515仕様書無しさん
NGNG一応言い訳すると、カキコしたあとサーバエラーが出たんで再カキコをしたんです。
別板で、鯖移転がらみでカキコはできてもエラーを返す状態になっていると知ったので、そういうことだったのでしょう。
で、iphlpapiについての情報、サンクス。環境を書かなくてすまんかったけれど、VC++6.0でコンパイルしたいのね。
VC++.NETではGetAddresses()でMACアドレス得られたけれど、VC++6.0だとiphlpapi.hがないからコンパイルできぬ。
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNGPlatformSDKぐらい入れとけ。
0518デフォルトの名無しさん
NGNGそうします
0519デフォルトの名無しさん
NGNGJAVAでは知らないけど、Solarisのconnect(2)を最終的に
呼んでるのであれば、タイムアウトの指定は出来ないと思うよ。
自分でalarm(2) みたいなタイマを用意して、connect(2) に
割り込みって入れられないの?
最近の*BSDなんかだど、setsockopt(2)とかでタイムアウト時間が
指定出来たりするんだけどね。
0520519
NGNG>> 508 じゃなくて、 >>507 でした。
0521デフォルトの名無しさん
NGNG自前のnativeラッパーを作るか、プロキシを立てるのが定石。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
NGNGそして漏れは522をさらしあげ
0524仕様書無しさん
NGNGPlatformSDKを入れました。うん、VC++6.0でもコンパイルできた。サンクス。
ところで、いつもコマンドプロンプトでコンパイルしてるんですけれど、
cl.exeにこの新しいPlatformSDKのincludeとlibのパスを与えるにはどうしたらいいんでしょうかね?
-Iでincludeパスは渡せたんですが、libのパスをどうやって与えるのか。
cl .... /link /libpath:"c:\promgram files\platform SDK\lib" みたいにすると、おバカなLINKコマンドは "files\platform" を開けませんなんて言うし。
0525仕様書無しさん
NGNG自己レスです。8.3表記を使ったらできました(哀)。
0526デフォルトの名無しさん
NGNGlinkを別途呼び出してみたら?
0527仕様書無しさん
NGNG実験しました。linkに対しては"..."は有効のようです。clが超おバカでした。
色々な実験を経た結果、"\"path"\" のように書けばうまくいきます。
8.3表記しなきゃならないかと思ってカグブルでした。。。
0528デフォルトの名無しさん
NGNG過去ログからの 俺の理解だと
1) A -> B UDPにて通信
2) 生ソケでAが使用したポートを調べる
3) Cがそのポートに対して通信
これでOK? ただ ネットで検索するとこんな簡単そうでないし
UDPの場合 パケット毎にポートかわるよね?
どうも 理解できん・・・ たのむ おしえてください
0529デフォルトの名無しさん
NGNGしかし相手のNATが送信元と送信先を厳密に検査するテーブルを持っている限り、
何をやっても通信が通ることはない。
0530デフォルトの名無しさん
NGNGまじ?
んっじゃ skypeは?
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNGソケットで、たとえばsend(割と大きいでーた);をしたときに、
フラグメンテーションがおこりますよね?
(APLレベルで)recv関数を呼んでデータを受信しますが
ここで受信できるデータって、受信側がACKパケットを
返したところまでと考えていいんですかね?
0534デャtォルトの名無bオさん
NGNGSynmetric系以外のNATならほぼOKだと思われ。
しかもSynmetrickなんて高セキュリティーなNATはスループット低下を招いたり高額になったりするから
普通のユーザーには受け入れられてないぞ。
企業くらいだと思われ。
0535デフォルトの名無しさん
NGNG0536デフォルトの名無しさん
NGNG新手の催促か?
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNG関連してだけど
その場合ケーブルテレビ系でもOK?
Upnpはケーブルテレビでも開ける?
もちろん LinuxもUpnpできるけど
実際のところ どうなんだろ?
Punching hole UDP なんて使わなくても Upnpで
十分なきもするが みなさんの見解おしえて
0539デフォルトの名無しさん
NGNGUPnPはルーターにXML形式でこのポート開けて!
と命令を送って対応ルータが開けてくれる仕組みで
対応してないのはほぼ全て無理
ISPのNATは絶対に超えられないと思われ。
それに対してPunching hole UDPはUDPの特性を生かしたもので
殆どのルーターで成功する。
あと、ISPのNATも場合によっては超えられる事が多い。
UDPはコネクション型ではないので応答の為に一時NATが経路を確保する必要があるので
その経路を利用するものだからな。
0540デフォルトの名無しさん
NGNG60k程度の情報リストをUDP形式でサーバーから受け取る仕組みを作ってるのですが
UDPはどれくらいのサイズの情報あたりから失敗する可能性が出てくるのでしょうか?
1回の転送でOKなサイズはどれくらいなのでしょうか?
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNG良くない。
基本的に,そういう隠蔽された部分の動作に期待するべきじゃない。
特定の実装,特定のバージョンのみに限定するなら,別だがな。
0543デフォルトの名無しさん
NGNGおまえもだめ
0544デフォルトの名無しさん
NGNGそうですねISPは できたとしても Upnpでポート開くなんて
いやがるでしょうね サーバーおかれたり
>>539
すみません 1つ教えてください
>>UDPはコネクション型ではないので応答の為に一時NATが経路を確保する必要があるので
その経路を利用するものだからな。
わたしの理解もこれなんですが
ttp://homepage3.nifty.com/toremoro/p2p/firewall.html
このサイトをみると 私の理解を超える複雑さなんですが
どうなんでしょ?
0545デフォルトの名無しさん
NGNGそのサイトの通り、多くのNATで動かすには双方のNATで経路を確保する必要がある。
片方だけだとダメな事が多い。
出来る事もあるんだけど・・・
0546デフォルトの名無しさん
NGNG違うと思うよ。
受信側(recv)のOSは、受信データを受け取ってOSの内部バッファ(setsockoptで変更可能)に
格納した時点で、ACKを返してると思います。
アプリ側にデータが渡ったがどうか(recvをコールしたかどうか)には依存していません。
0547デフォルトの名無しさん
NGNGかなりびみょ〜。どこにも確証はない。
0548デフォルトの名無しさん
NGNGUDPで通信する時に、zlibで圧縮して通信したいのですが
具体的な説明がされてるサイトってありますか?
一応調べたんですが、どうもソケットは扱えないと書いてあったので
どうすれば良いのかサッパリわからないんです。
0549デフォルトの名無しさん
NGNG0550デフォルトの名無しさん
NGNG送信バッファに圧縮掛けろ。
0551デフォルトの名無しさん
NGNGTCPを使えばコネクションが切れたとき確実に判りますか?
コネクションが切れた時点で鯖側でクライアントの情報をデータベースから確実に削除したいのですが…
0552533
NGNG> 受信側(recv)のOSは、受信データを受け取ってOSの内部バッファ(setsockoptで変更可能)に
> 格納した時点で、ACKを返してると思います。
では、スライディングウィンドウの範囲内のデータもsetsockopt(SO_RCVBUF?)
で変更可能なOSの内部バッファに入ってるんですかね?
OSの内部バッファ(setsockopt)に入っているデータの中に、スライディング
ウィンドウの対象範囲内となっているデータが入っていると、
(トランスポートレイヤレベルで)受信途中のものも受信しそうなきがするんですが・・・。
>アプリ側にデータが渡ったがどうか(recvをコールしたかどうか)には依存していません。
おつけいです。
0553デフォルトの名無しさん
NGNGちゃんと切ってくれれば判るが放置されたらわからん。
回線が勝手に切れたりとかな。
結局確実にと言うわけにはいかんな。
0554デフォルトの名無しさん
NGNG553のいうとおりで、マシンの電源引っこ抜かれたら気づかなかったりするかも。
相手側がKEEPALIVEをサポートしてれば、短めに設定しておいて早めに
切断を検知する方法しかなさそうな気がする。
0555552
NGNG>(トランスポートレイヤレベルで)受信途中のものも受信しそうなきがするんですが・・・。
(トランスポートレイヤレベルで)受信途中のものもrecv関数で(APLレベルで)受信しそうなきがするんですが・・・。
0556デフォルトの名無しさん
NGNGOSの内部バッファ(SO_RCVBUF)にあとどれだけデータを詰め込むことが
可能かを示すのが、ウィンドウサイズだと思うけど。
>>(トランスポートレイヤレベルで)受信途中のものもrecv関数で(APLレベルで)受信しそうなきがするんですが・・・。
意味がわからない。
受信途中ってのはどういう意味で使ってる?
OSの内部バッファに受信データが入っていればそれをrecvで取り出すことは出来ると思うけど。
そもそも、selectで受信データが在れば抜けてくるっていうのはそういうことじゃないの?
0557デフォルトの名無しさん
NGNGそりゃまだICMPホストアンリー茶ブルがあるがね。
プログラムが暴走して音信不通ってのが一番イヤらしいのの一つ。
0558デフォルトの名無しさん
NGNGaccessing database.
自作ソフトでメールを受信してみるとサーバーから上記のようなエラーが
帰ってきます。原因は何なんでしょうか?
それとメールは、ヤフーの無料のものです
0559555
NGNG>OSの内部バッファ(SO_RCVBUF)にあとどれだけデータを詰め込むことが
>可能かを示すのが、ウィンドウサイズだと思うけど。
セマンティックスギャップがおきているみたいです。
ウィンドウサイズ=スライディングウィンドウのサイズ=受信確認(ACK)無しに送信されるバイト数
のことを言ってます。
>受信途中ってのはどういう意味で使ってる?
>OSの内部バッファに受信データが入っていればそれをrecvで取り出すことは出来ると思うけど。
送信側
PACKET100-----------------------> 受信側
<------------------------ACK100
PACKET101-----------------------> 受信側
<------------------------ACK101
PACKET102--------------->(途中で消失)
届いてないのでACK102送らず
PACKET103----------------------->
<------------------------ACK103
データ送ってPACKET102が途中消失しちゃって PACKET100,PACKET101,PACKET103が届いている状態。 PACKET102が受信途中。
この場合、PACKET101まではrecv()関数で受信してもいいけど PACKET103をsetsockopt(SO_RCVBUF)で指定するバッファに入れちゃうと
PACKET102受信前に、PACKET103を受信して順番がくるうと思う。
だからスライディングウィンドウ用のバッファと、 recv受信待ちバッファ(OSの内部バッファ(SO_RCVBUF)のもの)
の最低2つのバッファをOSで持っていないとだめなような気がするのは 私だけでしょうか?一番いいのはソケット実装のソースみればいいのかも。。。。
0560559
NGNGもういっかいでなおしてくる
0561デフォルトの名無しさん
NGNGおいおい,お前ら,どっちもDQN。
TCPレベルでの処理なんて,ブラックボックス。
さも世の中全てそうであるかのように語るなよ(プゲラ
お前らがお話しているのはどこ製のブラックボックスでちゅか〜?
どっちも自家製妄想ボックスか〜な〜?
0562デフォルトの名無しさん
NGNGソース公開されてるのに何でブラックボックス??おまえがDQN
0563デフォルトの名無しさん
NGNGUDPでconnectを使用した場合
UDPの到着順が狂うという特性は回避
されます?
また、 UDPのノウハウがつまったような
サイトがあったら ぜひ教えてください
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGされません。
0566563
NGNG発生したんですね
0567デフォルトの名無しさん
NGNG荒しですか?
0568デフォルトの名無しさん
NGNGWindowsで、GetIfTable()を使い 通信情報の取得をしているのですが
dwLastChangeの値がどうにもよく分かりません。。。
ネットワークの接続時間を調べたいのですが
dwLastChangeの値がどういう単位なのか教えて頂けませんか?
0569デフォルトの名無しさん
NGNG>PACKET102が受信途中。
この状態は、TCP的には、PACKET101までが受信完了。
PACKET102の受信を待っているところ。
>この場合、PACKET101まではrecv()関数で受信してもいいけど
よいですね。
>PACKET103をsetsockopt(SO_RCVBUF)で指定するバッファに入れちゃうと
>PACKET102受信前に、PACKET103を受信して順番がくるうと思う。
これは、ないでしょう。
TCP的には、こんなことは出来ません。
>だからスライディングウィンドウ用のバッファと、 recv受信待ちバッファ(OSの内部バッファ(SO_RCVBUF)のもの)
>の最低2つのバッファをOSで持っていないとだめなような気がするのは 私だけでしょうか?
実際の実装に関しては、それぞれだからなんともいえないけど、バッファリング機構としては、そうなりそうですね。
そっか、おいらが、OSの内部バッファに受信したパケットを格納した時点でACKを返すって言ったからか。
TCP的にACKを返すってことは、ACKで指定したシーケンス番号までのデータがきちんと順序良く受信出来てます
ってことだから、
> あ、PACKET102受信してないからACK103は返さないな・・・。
ということだと思います。
結局、「受信途中のデータ」というものは存在しないってことでOK?
0570デフォルトの名無しさん
NGNG「TCPが処理を完了する前のデータ」ならあるかもね。
だけど、それがrecvをコールするアプリに渡されることはない。
0571560
NGNG>結局、「受信途中のデータ」というものは存在しないってことでOK?
かもしれんし、
>「TCPが処理を完了する前のデータ」ならあるかもね。
かもしれん。
バッファをどうやて使ってるかわからんけど
>だけど、それがrecvをコールするアプリに渡されることはない。
これは保証されてるってことやね。
なかなか考えさせられました。
0572デフォルトの名無しさん
NGNG流れ着いたままの順序で渡してくれるのが UDP
送信したとおりの順序で渡してくれるのが TCP
TCPスタック内部の動作は知らなくてもいいよというのが
TCP使う基本
0573デフォルトの七氏さん
NGNG0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNGもしかしたら、複数のPCを使って並列計算させるプログラムを教えてくれってことじゃないのか?
0577デフォルトの名無しさん
NGNG0578デフォルトの名無しさん
NGNGせようとおもうんだけど子プロで通信がうまくいってないのを検知するのってどう
やってやるの?とりあえずソケットがきれたら自殺してSIGCHLDを親が検知してゾ
ンビ回収する方向でやろうと思ってるんだけど、SIGCHLDを検出できなかったらア
ウトっぽいし、デッドロックとかで半死半生状態の場合も考えられるし。
ちなみに子プロはソケットとFIFOで通信させようと思ってるんで、親から定期的に
子のFIFOに書き込んで一定時間内に応答がなかったら死んでるっていうふうに解釈
してもいいのかな?子プロの巧い管理方法があったら教えて下さい。
0579560
NGNGせようとおもうんだけど子プロで通信がうまくいってないのを検知するのってどう
やってやるの?とりあえずソケットがきれたら自殺してSIGCHLDを親が検知してゾ
ンビ回収する方向でやろうと思ってるんだけど、SIGCHLDを検出できなかったらア
ウトっぽいし、デッドロックとかで半死半生状態の場合も考えられるし。
ちなみに子プロはソケットとFIFOで通信させようと思ってるんで、親から定期的に
子のFIFOに書き込んで一定時間内に応答がなかったら死んでるっていうふうに解釈
してもいいのかな?子プロの巧い管理方法があったら教えて下さい。
0580デフォルトの名無しさん
NGNGとりあえず、UNIX系のOSだね。
子プロセス側で通信がうまくいっていない事を子プロセス自身がきちんと
認識できる事という事と、
子プロセスで検出した事象を親プロセスに通知するという部分は、
まったく別の次元の話ですよね。
まずは、起こりえる障害に対してきちんと検出、対応が可能なロジックが
組めるかどうかを考えたほうが良いんじゃないの?
子プロセスが、デッドロック状態になった時に親プロセスで検出しようとしてる
見たいだけど、子プロセスがデッドロックにならない様に作る事って出来ないの?
通信中に回線が切れたり、相手のマシンの電源が切れたり、間のルータがとまったり
なんでのは、みんな検出可能だよね。
その上で、
>親から定期的に子のFIFOに書き込んで
>一定時間内に応答がなかったら死んでるって
>いうふうに解釈してもいいのかな?
>子プロの巧い管理方法があったら教えて下さい。
って言うのであれば、それはスレ違い。
0581デフォルトの名無しさん
NGNGWinsock2での質問なのですが
TCPで複数のセッションを管理する場合
どのようにするのでしょうか?
配列にsockaddr_in構造体をどんどん蓄積して行って
一致するIPを検索するような形でしょうか?
接続があればデータベースへ登録して、コネクションが切れたらデータを消すようにしたいのですが・・・
0582デフォルトの名無しさん
NGNGFD_RECVが来るごとに1度だけrecv()を呼び出した場合、
recv()がSOCKET_ERRORを返すことって通常あり得ますか?
<LEN (4byte)><BODY (LEN byte)>
という構造のデータを、
// LENあらかじめ受信され、バッファbufBodyも十分に長い
lenRecv := WinSock.recv(FSOCK, bufBody[Pos], LEN - pos);
inc(pos, lenRecv);
(Delphi)
……みたいな感じで受信していたのですが、LANではいつもうまくいくのに
インターネット上で離れた場所のPCとやると、時々データが壊れます。
recvの戻り値が怪しいと思い、エラーチェックするように変更したのですが、
本当にそこが原因なのかなあ? 、、、と。
recv()がSOCKET_ERRORを返す場合としては、どんな状況が考えられますか?
心当たりのある方、教えてくださいオナガイシマス
0583デフォルトの名無しさん
NGNG>>340-344
がおもろかったので記念カキコ
0584デフォルトの名無しさん
NGNG歴史に残る名レスだ。
しかし、この程度歴史に残してたら、いくら歴史があっても足りん。
0585デフォルトの名無しさん
NGNGデータを消すタイミングを知りたいだけなら、SOCKET変数とか
コネクションごとに、一意なデータを関連付けておけばOKでしょ。
>>582
Delphiでどう呼び出すかは知らないけど、WSAGetLastError()で
詳細とってみたら?
0586デフォルトの名無しさん
NGNG0587デフォルトの名無しさん
NGNG取得した IP パケットのプロトコル番号や
TCP のポート番号などでフィルタをかけたいんだが,
どうしたらいいの?
0588デフォルトの名無しさん
NGNGネタにマジレスすんなよ、バカ!
0589デフォルトの名無しさん
NGNGネタにマジレスすんなよ、バカ
0590デフォルトの名無しさん
NGNG何自閉モード入ってんだよおまいら?
0591デフォルトの名無しさん
NGNGネタにマジレスすんなよ、バカ
0592デフォルトの名無しさん
NGNGネタにマジレスすんなよ、バカ
0593デフォルトの名無しさん
NGNGお前ら、いい加減にしる!
0594デフォルトの名無しさん
NGNGネタにマジレスすんなよ、バカ
ネタにマジレスすんなよ、バカ
ネタにマジレスすんなよ、バカ
ネタにマジレスすんなよ、バカ
ネタにマジレスすんなよ、バカ
ネタにマジレスすんなよ、バカ
ネタにマジレスすんなよ、バカ
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNGいいわけねーだろ、バカ
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNGソケットに名前を付ける
socketで作ってbindで名前付けてlistenで待つ
バインバインと音がするのでbindになった
0601初心者
NGNG出力結果をテキスト方式で保存する方法ってわかりますか?
ほんとに初心者で専門用語とかわからないので、
できれば初心者にもわかるように優しく教えてください。
あと、これは友達に聞いてといわれたモノなので実際は俺自身もよくわかってません・・・
よろしくお願いします。
0602デフォルトの名無しさん
NGNGsocketで作ってbindで名前付けてlistenで待つ
0603デフォルトの名無しさん
NGNGどこがネットワークプログラミングなんだ?
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNGつまらん書き込みだな。ageるほどでもないぞ。
0606デフォルトの名無しさん
NGNGこんな上にあるのにage/sageにこだわるなよ・・・
0607デフォルトの名無しさん
NGNGお前も細かい事にこだわるなよ・・・
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNG./a.out > output.txt
0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNGつかってて平気ですか?
0613デフォルトの名無しさん
NGNGみんな我慢して使ってる。
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNGUNIXがなかったらと思うとぞっとするよ。
0618デフォルトの名無しさん
NGNG汎用コンピュータやスパコンあるじゃん
ま、こぼらーしかつかいませんが・・・ w
0619デフォルトの名無しさん
NGNG>>617 じゃないけど、ぞっとするな。
0620デフォルトの名無しさん
NGNGそういう面だけなら VMS もそんなに悪くなかったような気がするけど・・・
0621デフォルトの名無しさん
NGNG・・・頼むからもっと勉強してくれ
0622デフォルトの名無しさん
NGNGUnixの思想(特にSoftware Toolsの考え方)とは全く違うからなぁ…
部分部分では「これってなんかNTっぽいかも」と思う部分はあったが、
なんつーかCygwin載ってない素のWin2000にtelnetd経由でログオン
したような感じで。
「リモートログインできてコマンド叩けるのはいいけど、標準ツールは
少ないわ、正規表現使えないわ、それどころかリダイレクトもパイプ
も使えなくて一体何をどうしろってんだ」
ってのが俺の感想。(リダイレクトは一応できなくはないけど、事前に
リダイレクトONのコマンド叩いとかないといけないので、かったるくて
やってられない。実際GNUの〜utils系入れたけど使い物にならず)
登場当時はともかく、今となっては完全に過去の遺物としか思えん
なぁ。(逆に今でも第一線でバリバリ使われてるUnixが驚異的とも
言えるが)
…そういやOpenVMSのTCP/IP周りは結局触らずじまいだったな。
(仕事的にもアレだったので、そこまでやる前に逃げた)
0623デフォルトの名無しさん
NGNGなにも勉強せずにいきなり使いこなせるわけないだろう…。
それを棚に上げて、使い物にならずとか、完全に過去の遺物としか思えんなぁ
という発言はおかしいぞ。
0625デフォルトの名無しさん
NGNGUnix 風に使うなら shell もいれないと・・・
いまだと GNV (GNU's Not VMS) なんていうので一式入るみたいですね。
0626デフォルトの名無しさん
NGNGDCL以外になにがいる! 私は1994年ごろVMSに移植された
CERN httpサーバーの上でCGIスクリプトをDCLで書いていた。
(スレ違いスマンがVMSってなかなか話題にならんのでつい)
0627デフォルトの名無しさん
NGNGすべて収集する方法がわからんです
0628デフォルトの名無しさん
NGNG困りましたね。
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNGそういうやり方に関して載ってるお薦め書籍ってありますか?
0632デフォルトの名無しさん
NGNG捕捉
普通の Berkley socket なスタイルの組み方はわかるんですが、
FAQ で言うような非同期 I/O やオーバーラップ I/O など性能いいのを使いたいのですが、
ぐぐってみた限りでは、非同期 I/O だとウィンドウプロシージャ宛てに
メッセージが届く仕様のようだし、オーバーラップ I/O は
検索キーワードがよくわかってないせいかほとんど情報がありませんでした。
0633デフォルトの名無しさん
NGNGWindowsXPでVC++使ってます。
サーバ側のプログラムで、データが送信されたときだけrecvをしたいのですが…
例えば要点だけ書くと
NewSocket = accept(OldSocket, (struct sockaddr *) &NewAddr, &NewAddrSize);
として
FD_SET(NewSocket, &read_set);
でFDをセットして
while(1){
if(select(1, &read_set, NULL, NULL, &timeout)){
recv(NewSocket, buffer, NET_BUFFER_SIZE, 0);
}
else ---;
}
とやってみたのですが、クライアントからデータを送っても一度もrecvに入らないのです。
色々試したり調べたりしたのですが、なぜかどこもUNIX、LINUXのソースばかりで…。
変数はそれぞれ適当な値が入ってます…おそらく。
どこが悪いか分かる方、教えてもらえませんでしょうか?
0634633
NGNGif(select(1, &read_set, NULL, NULL, &timeout))
ではなく
if(!(select(1, &read_set, NULL, NULL, &timeout) == -1))
でした。すみません。
0635デフォルトの名無しさん
NGNGif(select(NewSocket+1, &read_set, NULL, NULL, &timeout)){
0636635
NGNGif(select(NewSocket+1, &read_set, NULL, NULL, &timeout)!=-1){
0637デフォルトの名無しさん
NGNG漏れは、SOFTBAKがDEVELOPER PRESSというシリーズで出していた
「WinSock 2.0 プログラミング」という本で、概要を勉強したけど、
もうamazon.co.jpにも出てこないような本だからなあ。役立たずでスマン。
でも、MSDN地道に読むのも、勉強になるよ。
0638633
NGNGそれでやってみたところ、一回目のselect呼び出しで一度0が返り、
データの送信なんてしていないのにservが呼び出されてしまいました。
…で、とりあえずデータ送信してやったら、2度目からのselect呼び出しでは
ずっと-1が返ってます。
データを送信してもservに入ってくれなくなりました。
GetLastErrorでみると
無効な引数が提供されました。
と言われます。
謎です。
0639デフォルトの名無しさん
NGNGこんな感じでやればほとんどBerkley socketの非同期とかわらんよ
ちと汚いが・・・
//ソケット作成(現時点ではブロッキングモード)
SOCKET Socket.Socket = socket(AF_INET, SOCK_STREAM, 0);
if (Socket.Socket == INVALID_SOCKET)
{
WSACleanup();
return FALSE;
}
// ソケットを非ブロッキングモードに設定
arg = 1L;
nRet = ioctlsocket(Socket.Socket, FIONBIO, &arg);
if (nRet == SOCKET_ERROR)
{
WSACleanup();
return FALSE;
}
0640デフォルトの名無しさん
NGNGSOCKET SocketRcv;
struct sockaddr_in acp;
int len = sizeof( acp );
//accept処理
for (;;)
{
if( ( SocketRcv = accept( Socket, (struct sockaddr *)&acp, &len)) < 0 )
{
closesocket( Socket );
exit(1)
}
if(WSAGetLastError() != WSAEWOULDBLOCK)
{
// 接続エラー
closesocket(Socket.Socket);
exit(1);
}
}
0641デフォルトの名無しさん
NGNGchar szBuf[BUF_SIZE];
WSABUF wsaBuf;
DWORD dwRetByteCount;
WSAOVERLAPPED wsaOverlap;
DWORD dwWsaFlg;
wsaOverlap.hEvent = WSACreateEvent();
wsaBuf.buf = szBuf;
wsaBuf.len = sizeof(szBuf);
dwWsaFlg = 0;
for(;;)
{
dwRetByteCount = 0;
memset(szBuf,0,sizeof(szBuf));
if ( WSARecv( SocketRcv, &wsaBuf, 1, &dwRetByteCount, &dwWsaFlg, &wsaOverlap, NULL) != 0)
{
// とりあえず受信完了するまでまってみる?!
nRet = WSAGetOverlappedResult(SocketRcv, &wsaOverlap, &dwRetByteCount, FALSE, &dwWsaFlg);
switch (WSAGetLastError())
{
case WAIT_TIMEOUT: break;
case WSA_IO_INCOMPLETE: break; // 非ブロッキング状態なので常にここへはいってくる
case WSA_IO_PENDING: break; //変なエラーなのでおとしたほうがいいかも・・
default:
}
continue;
}
//RECV完了処理
}
0642デフォルトの名無しさん
NGNGWinsockの場合、第一引数はBSD互換の為に
残されてるだけで、実際は使われてない。
ただ、一応残されてるので>>636のようにBSD互換で書いておいた方がいい。
で、read_setはselectを呼び出すたびに設定しなおさなきゃダメよ。
だから、この場合
FD_SET(NewSocket, &def_set);
while(1){
read_set=def_set;
if(!(select(NewSocket+1, &read_set, NULL, NULL, &timeout) == -1))
でいけると思う。
0643633
NGNGどうもありがとうございます。
解決しました。
read_setの書き換えと、データが送信されたときのselect()の戻り値が1であることの2点が悪かったようです。
データ送信されてないときのselectの戻り値0なんですね…。
忘れていました。
0645デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4797306882/249-4245099-5917164
これですか?
このスレのテンプレ(>>2)にも書かれてる本ですね。
ありがとうございます。早速注文してみます。
>>639-641
おおおお。ありがとうございます。
コードを見ながら色々試してみます。
0646デフォルトの名無しさん
NGNGあれ?WinSockで検索しても、出てこないから、取り扱いが
無いのかと思ってた。(WinSock2.0で検索したら出てきやがったorz)
>>2は見落としてた crt
0647デフォルトの名無しさん
NGNGYES.
>子プロセス側で通信がうまくいっていない事を子プロセス自身がきちんと
>認識できる事という事と、
>子プロセスで検出した事象を親プロセスに通知するという部分は、
>まったく別の次元の話ですよね。
ですね。
>まずは、起こりえる障害に対してきちんと検出、対応が可能なロジックが
>組めるかどうかを考えたほうが良いんじゃないの?
>子プロセスが、デッドロック状態になった時に親プロセスで検出しようとしてる
>見たいだけど、子プロセスがデッドロックにならない様に作る事って出来ないの?
>通信中に回線が切れたり、相手のマシンの電源が切れたり、間のルータがとまったり
>なんでのは、みんな検出可能だよね。
おっしゃるとおり。てゆか、
>通信中に回線が切れたり、相手のマシンの電源が切れたり、間のルータがとまったり
>なんでのは、みんな検出可能だよね。
は、普通に親から検出可能だよね。だから↑の事象はあまり気にしてない。
0648デフォルトの名無しさん
NGNG>>親から定期的に子のFIFOに書き込んで
>>一定時間内に応答がなかったら死んでるって
>>いうふうに解釈してもいいのかな?
>>子プロの巧い管理方法があったら教えて下さい。
>って言うのであれば、それはスレ違い。
まあね、普通に親から検出可能なものを監視する必要ないもんね。
それに子のFIFOに書き込んで子からFIFO経由で応答があっても
ちゃんと動いているっていえないもんね。おっしゃるとおり。
じゃあ結局、ちゃんとつくっていれば、
子供の通信を100%管理できるよってことね。
特に監視する必要はないと。。。そういうこと?
そもそも監視すること自体がナンセンスってことですか?
0649デフォルトの名無しさん
NGNG> じゃあ結局、ちゃんとつくっていれば、
> 子供の通信を100%管理できるよってことね。
まさか。100%なんて出来ませんよ。
通信しているプロセス本人でも、
100%は制御できないのがネットワークプログラミングですから。
> 特に監視する必要はないと。。。そういうこと?
> そもそも監視すること自体がナンセンスってことですか?
それはネットワークプログラミングではない。
子プロセスが何やっているかには大きく影響されない事だからね。
0650デフォルトの名無しさん
NGNGさげろ、カス
0651デフォルトの名無しさん
NGNGsage厨(>>650)は無視していいぞ。
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGまたお前か?
0655デフォルトの名無しさん
NGNG実際にはどれくらいの大きさのパケットとして受け取っているんですか?
なるべくならそのサイズとバッファサイズをそろえたいんですが。
0656デフォルトの名無しさん
NGNGそんな事を考えるヒマがあったら他のことをしろ
0657デフォルトの名無しさん
NGNG>じゃあ結局、ちゃんとつくっていれば、
>子供の通信を100%管理できるよってことね。
>特に監視する必要はないと。。。そういうこと?
>そもそも監視すること自体がナンセンスってことですか?
ちゃんと通信が行えているかどうかを一番把握できるのは、
通信を行っている子プロセス側。
よって、通信エラーに関する部分については子プロセス側ですべて
処理を行う。
そして、きちんと通信エラーを検出するプログラムが書けるのであれば、
子プロセス側がデッドロック状態になることはない。
ただし、子プロセス側が通信に関する部分以外でデッドロックとなりうる
ロジックを書く必要があって、それを親プロセス側で監視したいというのであれば、
それは、通信とは関係ない話であり、スレ違いでしょ。
ってこと。
そういう部分について意見が聞きたいというのであれば、もう少し具体的にね。
0658デフォルトの名無しさん
NGNGreadOK = mask;
select(1024, &readOK, NULL,NULL,BULL);
/*待ちうけソケットに反応があった場合*/
if( FD_ISSET(soc_waiting, &readOK)==1)
でsoc_waitingは待ちうけソケットなのですが
こんな感じで判別してacceptしようと思ってるのです。
でも、このコードでは待ちうけソケットにどれだけの数のコネクション待ちがあるかわからないのですが
どうすれば判るように出来るのでしょうか?
0659デフォルトの名無しさん
NGNG/ ´_ゝ`) /⌒ヽ ちょっと通りますね、ここ通らないと行けないので・・・
| / / ´_ゝ`)
| /| | | / /⌒ヽ チャプッ
// | | | /| | / ´_ゝ`)
U .U // | | | / /⌒ヽ プクプクッ プクプクプク・・・・
U .U 二| /| |二-_ -_/_´_ゝ`)二- - /⌒ヽ= _ _ ッ・・・・・
 ̄- ̄- ̄ ─ ─  ̄-  ̄- ̄  ̄-
0660デフォルトの名無しさん
NGNGたぶん、待ちがいくつあるか判別する方法はsocketライブラリでは無いと思う。
そもそも、待ち状態のがいくつあるか知ってる必要あるの?
そのまま、ループまわせば一個ずつacceptできるし。
あと、selectの第一引数は直した方がいいぞ。
0661デフォルトの名無しさん
NGNGとりあえずBULLとは何なのかを15文字以内で簡潔に説明せよ。
0662658
NGNGレスどうもありがとうございます。
それほど重要な情報ではないので諦めます。
あと、常時複数のコネクションを張るシステムでして・・・
その上コネクションが頻繁に繋げられたり消されたりするシステムなんです。
それで現在のfdの最大値が判れば無駄なくselect()が出来何とかなるのですが…
いちいち記録しておくしか方法は無いでしょうか?
>>661
指摘どうもです。
ミスタイプです。。。
0663デフォルトの名無しさん
NGNG少なくとも、max()とか使って走査範囲を順次拡大するだけでもいいと思う。
最大値のコネクションが切れてもこの場合は無視。
そう組むだけでも、最初っから最大値固定でやるより、パフォーマンス
いいと思うよ。
その上で、一定時間毎にアクティブな奴全てを走査して最大値を求めなおす。
ってのもあるが、こっちはあまり効果なさそうな気がする。
0664デフォルトの名無しさん
NGNGホスト名の重複した 3 つのエントリ (上下 2 つは同一の IP アドレス) を記述
した場合、そのホスト名へのアクセスでブラウザやら ping やらが以上終了する
見たいなんだけど、もまいらのマシンもそう?
192.168.1.1 aaa
192.168.1.2 aaa
192.168.1.1 aaa
上記の順で書いた時 ping aaa や http://aaa/ へのアクセスでプロセスが異常
終了するみたい。まぁそもそも同一ホスト名に別アドレス割り当てる事自体
イレギュラーなんだけどね。http://support.microsoft.com/default.aspx?scid=kb;ja;177075
動作は未定義って事なんだろうけど、プロセス異常終了とは…
0665デフォルトの名無しさん
NGNGばか?
0666デフォルトの名無しさん
NGNGウヒヒ
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG割り当てに関することだが、それはhostsの動作の話であってこういうのはある
ttp://ash.jp/env/srv/rounddns.htm
0669デフォルトの名無しさん
NGNG馬鹿はお前とゲイツ。
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGあーごめん、読み直さずに書き込んでしまった。
"「hosts ファイル上で」同一ホスト名に別アドレス割り当てる事自体" って気で書いてました。
0672デフォルトの名無しさん
NGNGwinsock が msvcrt の wcslen に NULL 渡して落ちてるね・・・
お粗末だなー
0673デフォルトの名無しさん
NGNG素人は駆除できんな。
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNGそれで質問させて頂きたいのですが、socketを、
socket(AF_INET, SOCK_RAW, 6);
の様にraw socketでプロトコルはTCPに指定して作成し、
sendtoするとinvalid argumentでエラーになってしまいます。
sendtoの引数には、
//th : TCPヘッダ自作のためのtcphdrをメンバにした構造体
//sa : sockaddr_in
sendto(sid, (void *)&th.tcp, sizeof(struct tcphdr), 0, (struct sockaddr *)&sa, (int)sizeof(sa))
としているのですが、なぜエラーになるのでしょうか?
ちなみにsocket関数の第3引数を0(IP)に指定すると成功します。
0676デフォルトの名無しさん
NGNG確か、Windowsの制限でSOCK_RAWのTCP/UDPは使えなかったはず。
俺もここら辺詳しくないから、詳細は
ttp://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html
↑でも見てくれ
0677デフォルトの名無しさん
NGNG実際に hosts を書き換えるスパイウェアはあるね。・゚・(ノД`)・゚・。
まれにPC初心者板の「エロサイト見たら・・助けて」スレで相談受けるよ
0679675
NGNGwinsock2で、setsockopt()のIP_HDRINCL(.NETではSocket.SetSocketOption()のHeaderIncluded)
を有効にしたいんですが、
しようとすると割り込み入って失敗します。
せっかくこういう関数/メソッドがあるのに、Windows上でヘッダいじるのは無理なんでしょうか?
0680デフォルトの名無しさん
NGNG割り込みってなんだ??? signal か Exception か?
どっちにしてもちゃんと具体的なメッセージ書けって。このスレにはエスパーはいないぞ。
とりあえず管理者権限が要るって >>676 の先に書いてあるが、それは大丈夫か?
0681675
NGNGレスありがとうございます!
権限は管理者です。
C#でコード書いてみて、Exceptionをcatchすると以下のようなエラーメッセージが出ます。
ちなみにエラー番号は10004です。
System.Net.Sockets.SocketException: ブロック操作は WSACancelBlockingCall の呼び出しに割り込まれました。
at System.Net.Sockets.Socket.SendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP)
at System.Net.Sockets.Socket.SendTo(Byte[] buffer, EndPoint remoteEP)
調べてみるとシステムコールの割り込みが発生しているようです。
HeaderIncludedをtrueにすることによってヘッダを自作してパケットを送ることが出来ると解釈しているんですが、
それは間違いなんですかね?
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG暇だったんで、昔作った自前ICMPツールを改造してテストしてみた。
言語はC++だが、特に問題なく送信できた。
ちなみにICMPとTCPで試したけど、どっちも問題なし。
IPヘッダーからTCPヘッダーまで、チェックサム含めて間違って無いよな?
0684680
NGNG俺も C#.NET で簡単なサンプル書いてみたけど、フツーに動いたよ。
(昔Cで作った Wake On LAN のパケット投げる奴を C# にしてみた)
その Exception から推測するに、SendTo() 処理中に異常処理かなんかで
プロセスorスレッドを強制的に終了させているように見える
(あくまで推測で、あまり根拠はないが)。
また関係あるかどうかはわからんが、MSDNの SendTo() のドキュメントには、
下のレイヤでバッファリングするため長さが長すぎたりすると
SocketException が飛ぶという記述もある。
>>683 が言うように、ヘッダの長さやチェックサムが全部正しいか
チェックしてみたら?
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNGlocalhostじゃね?ネトゲならβ版公開してテストしてるけど。
まあスレッド使って擬似DoSとかできんことも無いw
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG0689658
NGNG0690デフォルトの名無しさん
NGNGガッ
0691デフォルトの名無しさん
NGNGdev/pollとかOS依存のものは使わない方向で教えて。
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNG大体同時アクセス100人前後までを想定してる。
>>693
でも無印pollはwin系では実装されてないしなぁ。(VC6.0のリファレンスで確認した分には)
殆ど共通のアルゴリズムでコンパイルしたかったので。
単純なメッセンジャー鯖を作りたいんだけどね。
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGそれくらいならselectで十分効率的。
うまく組んだらthread+selectの方がいいだろうけどいろいろ面倒でしょ。
0697デフォルトの名無しさん
NGNGじゃあselectで頑張ってみる。
> うまく組んだらthread+selectの方がいいだろうけどいろいろ面倒でしょ。
必要に迫られたらそうするよ。うん。面倒は嫌いw
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNG0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNGこれの最大ファイルサイズってどれくらいでしょうか?
規格上決まってますか?
0704デフォルトの名無しさん
NGNG0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNGだってWinにarpコマンドあるしねw
0708番組の途中ですが名無しです
NGNG画像などの簡易交換機能をつけるとそれなりに利用者は多くて、ネットワークとして機能すると思うんだけど自分の技術じゃむりぽ
0709デフォルトの名無しさん
NGNGつまりMS以外は事実上無理なんですね?
0710デフォルトの名無しさん
NGNGなんでそうなるの?
0711デフォルトの名無しさん
NGNGiphelpなんたら.libってので出来たはず
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG犯罪者続出のロシアンルーレットツールなんて作ったら、開発者までしょっぴかれますがな
0714デフォルトの名無しさん
NGNG程度のものしか作れないみたいですが…
0715デフォルトの名無しさん
NGNG英語読めんから情報がすくねw
0716デフォルトの名無しさん
NGNGばっちりです。
どうやったらそんなに詳しくなれるんでしょうかね
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNGsend関数が上手く動作してくれません。recv関数も上手く動いてないと思うけど。
戻り値とか引数とかの書き方間違ってるのでしょうか?
int WSAAPI d_send(SOCKET s, const char FAR * buf, int len, int flags) {
int ret = send(s, buf, len, flags);
return ret
}
0720デフォルトの名無しさん
NGNGほほう。
0721田沼意次
NGNG日頃の賄賂が足りないのでは?
0722デフォルトの名無しさん
NGNGあれをしないと使えないんじゃなかったっけ?
0723デフォルトの名無しさん
NGNGエラーならWSAGetLastError()の戻り値調べてみましょう?
http://msdn.microsoft.com/library/en-us/winsock/winsock/windows_sockets_error_codes_2.asp?FRAME=true
英語だけどエラーコードの一覧があるので参考にどうぞ
>>722
WSAStartup()のことですね。
この関数を呼ばないとWinsockAPIの呼び出しが失敗しますね。
0724718
NGNG日本語おかしいですか?バカですみません・・・
>>722>>723
WSAStartup関数は呼んでませんでした。
試してみます。
エラーが出る前にsend関数でプログラムが落ちるので・・・
上の関数ためしてきます。
0726718
NGNG呼んでも死んで(?)しまいます。
DLL_PROCESS_ATTACHの場合は、WSAStartup関数以降が処理されない。
WSAStartup関数のラッパの場合は、「unknown software exception」のエラー。
同じ名前のdllを作成して、中でそのdllの関数を呼んでたりするからダメなのかな?
一筋縄ではいかないようで・・・もう少し頑張ってみます。
>>725
ありがとー
0727デフォルトの名無しさん
NGNGコメントアウトされてるから呼び出すと何か問題がありそうな予感
0728デフォルトの名無しさん
NGNGkageがDLL_PROCESS_ATTACHでやってるのはwsock32.dllの
LoadLibraryであって、そのタイミングでWSAStartup()はしてない。
(後でかちゅ〜しゃ本体から呼ばれてるっぽい)
0729718
NGNGレスしてくれた方ありがとうございます。
「ws2_32.dll」と同じ名前にしているので(?)ラッパする関数を再起していました。
それで、本物のdllの関数を呼ぶようにしたら出来ました。
当たり前と言ったら当たり前の事ですね・・・勉強が足りないようです。
あと、WSAStartup関数を呼ばなくてもsend関数、recv関数を呼べました。
参考HPを探していて見つけた事
ラッパを作成しなくても、そのexeがロードしたsend関数なりrecv関数なりの
アドレスに新しく作成した関数のアドレスを上書きすれば、関数のHookが
出来そうですね。
0730718 補足
NGNGLoadLibraryで呼び出したdllの関数
0731デフォルトの名無しさん
NGNG言語はCでLinuxかC#でWindowsなんですけど
datalinkでsocketをつくって
あとはrecvfromとかで読む込むのですか?
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG近頃の子供は漢字に弱いな
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG例えば、サーバーとメッセージのやり取りをしながら、他のクライアントとボイスチャットをするとか・・・
0736デフォルトの名無しさん
NGNGところで、STUNとの違いって何なのかな?
同じもののように思えるのだけれど…
UDP Hole Punchingっていうのは概念で、
STUNは具体的な実装?
的外れなこと言ってたらすみません。
0737デフォルトの名無しさん
NGNG同じ人が繰り返し言っているだけ。
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG板違い
WebProg板へどうぞ。
0740デフォルトの名無しさん
NGNGWebDAVスレなんてないし。
それにWinSock, WinInetと同種の話ではないの?
0741デフォルトの名無しさん
NGNGMicrosoft Internet Publisher に付いてくる OLE DB Publisher は http/dav をサポートしてる
みたいだけど、この publisher だけ入手できるのかとか、通常の IE 6 あたりに含まれてるのか
とかは不明。
0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNGファイルの"読み"と"書き"だけなら,WinInetでHTTPの"GET"と"PUT"するだけ。
WinSockでべた書きでもいいけどさ。
GUIなら>>741が言ってるのを使えばいい。ほい,サンプル。
http://support.microsoft.com/default.aspx?scid=kb;EN-US;248501
Webフォルダ(webdav)が使えるWindowsなら,ちゃんと入ってる
0745過去にSTUNの質問した一人
NGNG流石にそれは無いだろ・・・w
多分Skypeに採用されたのが人気に拍子をかけたのだろう。
元々NAT超えに関しては多くの人が関心のあった分野だし。
>>736
同じ。
単にRFCに登録されたのがPunchingHoleUDPじゃなかったっけ?
0746過去にSTUNの質問した一人
NGNG何故分ける?
UDPはコネクション型では無いという事を思い出せ(セッションに区別が無い)。
パケットを個別に分ける必要なんぞ無いだろう。
0747デフォルトの名無しさん
NGNG> UDP Hole Punchingっていうのは概念で、
> STUNは具体的な実装?
そうです。
/FYI/
http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.txt
http://sebsauvage.net/punching/
http://alumnus.caltech.edu/~dank/peer-nat.html
ftp://ftp.ietf.org/rfc/rfc3489.html
http://www.skype.com/home.ja.html
0748デフォルトの名無しさん
NGNG出来ればUNIXのサーバリストも探したいです。
0749デフォルトの名無しさん
NGNG誰か,この日本語解釈できる?
わしには理解できない。
2行目も意味不明。
0750デフォルトの名無しさん
NGNG0751デフォルトの名無しさん
NGNGネーミング(?)にワラタ
0752748
NGNG0753デフォルトの名無しさん
NGNG#include<stdlib.h>
void main(void)
{char *str;
str=malloc(sizeof(char)*20);
scanf("%s",str);
printf("%s",str);
free(str);
}
voidがなんとかってエラーがでます、でもこれは本にのってた
サンプルプログラムのはずなんですけど。
もしかしてこの本はだめなんでしょうか?
0754デフォルトの名無しさん
NGNGstr=(char *)malloc(sizeof(char)*20);
0755デフォルトの名無しさん
NGNGNetBIOSかよ。ほれ。
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=netbios+ncb
NCBSTATかNCBASTATか,どっちが必要かは自分で判断しろ。
2行目はDQN確定?
0756デフォルトの名無しさん
NGNGどのへんがネットワークなのか
0757デフォルトの名無しさん
NGNGC
0758デフォルトの名無しさん
NGNGヘ_ヘ
ミ ・ ・ ミ 「なんとか!」
( ° )〜
0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGつまらない。
0761デフォルトの名無しさん
NGNGおれに1から手とり足とりおしえてくれ!
くそども
0762デフォルトの名無しさん
NGNG悲惨だなw
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG0765
NGNG作ってみようかと思うのですが、参考になるソースとか
サイトとかないですかね
0766デフォルトの名無しさん
NGNGWWWブラウザやftpのソースを呼んだらどうだろうか?
socketでぐぐればUNIX関係の簡単なサンプルが手に入るかと
0767デフォルトの名無しさん
NGNGアレの後継のソフトのソースはOpenであったんじゃなかった?
0768765
NGNGあ〜、ブラウザのソースなら必要な情報が全部
わかりそうですね
でも敷居が高いような・・・
http のダウンロードに関する簡単なサンプルがあればと
思うんですけど
0769765
NGNGまじっすか
でも何でググればよいんでしょうか
0770765
NGNG頑張ってみます
ありがとうございました。
0771デフォルトの名無しさん
NGNGWindowsには、
UNIXドメインみたいなソケットってあるんですか?
cygwin + postgresqlでpsqlを連続して使うと、
前のpsqlのTIME_WAITが残ったままになって、
後のpsqlがエラーになってしまうのですが。
0772デフォルトの名無しさん
NGNG昔、Netscapeのソースが公開されたことあったな。
0773デフォルトの名無しさん
NGNGnetscapeなんていわずlynxとかw3mでもいいだろ
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNGだからその方法を知りたいんだろ?
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGソースコードをいくつか見たほうがいいと思う
0778デフォルトの名無しさん
NGNGとりあえず、wget, curlから始めれば?
次はlftp。
0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNGopenが_openだったりする程度だったような
0781デフォルトの名無しさん
NGNG本気で言ってるのか
じゃあ、fork()やsigaction()、ttyの制御をやりまくりのシェルでも
移植してみ。
むろんcygwinとかハンパなことを言わずにWin32ネイティブで
0782デフォルトの名無しさん
NGNG何剥きになってるの?
0783デフォルトの名無しさん
NGNG改行の違いだとか
WinsockのSOCKETはfile descripterじゃないからfdopen()できないとか
read(), write()はできないからrecv(), send()だとか
writev()?なにそれとか
alarm()つかえんとか
腐るほど違いはあるだろ
0784765
NGNGレジュームとかをやってみようとすると
ちゃんと仕様を知らないと駄目っぽいですね
HTTP_GET に関しては以下のサイトを参考にしました
ttp://www.sea-bird.org/doc/Cygwin/http2.html
今は以下のサイトのソースを眺めてます
ttp://aria.rednoah.com/linux_j.shtml
0785デフォルトの名無しさん
NGNG0786デフォルトの名無しさん
NGNGえ?今のMSVCRTだとできるの?
ReadFile(), WriteFile()が使えるようになってるのは知ってるが
少なくとも以前は、
_open_osfhandle()→fdopen()しても、
結局CRTのエミュレーション層がブロッキングなハンドルじゃないと
扱えなかったんだよね
# ブロッキングソケットではダメ
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG98/Me とかはダメだったりしない?
0790デフォルトの名無しさん
NGNG95系とNT4はダメですね
2000以降のリダイレクタが強化されたんでしょう
その他もGetLastError()がWSAGetLastError()の代わりに使えるかどうかとか
UDPでconnect()したときの挙動とか
色々違いはありますよね同じWinsockでも
0791デフォルトの名無しさん
NGNGいや、95系もNT4もできた(というかやってた)けど。> ReadFile(), WriteFile()
おまけに95系はソケット相手ならoverlapped I/Oまで使えた。
が、調子に乗って同期取らずにガンガンWriteFile()したらOS巻き込んで
落ちた(w
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNGエロイ人に教えて欲すぃんだけどさ、
Winsock2 でね、割り当てられたIPv6グローバルアドレスを取得できるAPIって何なのでせう?
0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG確かそのヘンの違いは(OS毎の動作の怪しさは別として) Winsock 2 と
素の winsock の違いだったと記憶しているけど。
0798デフォルトの名無しさん
NGNG書いてLANケーブル抜いた状態で Winsock 2.2 の
gethostbyname()に自ホスト名を渡してコールしたら、
hostent の h_addr_list に 127.0.0.1 だけが入ってて驚いたんだけど、
Winsock ってこんな不思議な動きをするものなのでしょうか?
エロイ人教えてください。
0799デフォルトの名無しさん
NGNGHTTPリクエストヘッダのUser-Agentの文字列(製品トークン)を
誰か教えてくださいませ。
0800デフォルトの名無しさん
NGNGする。それに気が付かなくて、昔はまったことがある。
悲しい想い出。
要するに、IPアドレスはNICに付く物だから。ケーブル抜くと、
カードが無効になっちゃうんだろうねえ。よくわかってないけど。
0801デフォルトの名無しさん
NGNGWindows2000 5.00.2195 + Service Pack 4
Internet Explorer 6.0.2800.1106 + Service Pack 1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n
0802デフォルトの名無しさん
NGNGありがとうございます。
自分の環境のせいではないと判明して安心しました。
そのときにどうやって回避されたかも教えていただけますか?
#欲張りですいません。
0803デフォルトの名無しさん
NGNGわざわざ、どうもありがとうございます。
0804デフォルトの名無しさん
NGNGDHCPの場合、動的に変わらないと腹たつでしょ。
仕方ないんじゃないの?
俺のLinuxも127.0.0.1と::1だけだべ。
0805デフォルトの名無しさん
NGNGそりゃ,hostsファイルじゃなく,NETBIOS名引いてるからじゃねーのか?
コンピュータ名とhostsファイルのホスト名が同一とみた。
両者の名前,ばらばらにしてみ?
0806デフォルトの名無しさん
NGNGstruct sockaddr_in sa;
::ZeroMemory( &sa, sizeof( sa ) );
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = ::htonl(INADDR_ANY);
sa.sin_port = ::htons( (WORD)pPort );
if( ::bind( Socket, (struct sockaddr *)&sa, sizeof( sa ) ) == SOCKET_ERROR ){
}
}
上記のようにするとbindでエラーになるのですが何が原因なのでしょうか?
OSはXPでコンパイラはBCB5です。
0807デフォルトの名無しさん
NGNG0808793
NGNGまだ試してないが調べてみると getsockname()使ってもダメみたい。
コネクションが確立してからならそれに割り当てられたローカルIPアドレスを知ることができるらしいが
コネクション以前の段階で知りたいんです。
あとUDPだし。
>>795
どんなコードか教えてくらはいエロイ人!
getaddrinfo(NULL, 〜)だと得られるのはワイルドカードアドレス「::」で、これじゃダメなんだわし。
2001:100:ff::ac とかこんなのが欲しいのだわし。
Linuxだと /proc/net/if_inet6 を見ればいいんだが、Winsockの場合がわからんヽ(`Д´)ノ
0809デフォルトの名無しさん
NGNG回避不可能です。大掛かりになっても良いなら、if が down したら
loopback device を up するようなプログラムを作って動かしておくとか、
やりようもあるでしょうけど。
0810デフォルトの名無しさん
NGNG(WORD) pPort っていう部分が非常に怪しい。
もし外すとエラーになるからキャストしてるんなら、
もう少し C の勉強をしたほうが良いと思う。
0811デフォルトの名無しさん
NGNGできれば口調はそろえてほしい・・・
0812デフォルトの名無しさん
NGNG着眼点がそもそも違いますね。
WORDはunsigned shortですよ。全然問題ないですねそこは。
0813デフォルトの名無しさん
NGNGサーバー側ね
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNGBCBにはエラー内容は出てこないの?
0816デフォルトの名無しさん
NGNGじゃあ、IPHelperのGetAdaptersAddresses()あたりは?
0817デフォルトの名無しさん
NGNGpPortと言う名前からして、ポインタくさいんだがそこは大丈夫か?
まぁキャストしてるから、なんかのポート番号にはなってるんだろうが…。
あと、そこが問題ないとして既に使用しているポート、または解放直後の
ポートを使おうとしてるとかはない?
とにかく、errnoなりWSAGetLastErrorなりでエラーの詳細を確認してみ
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG必死すぎ
0821デフォルトの名無しさん
NGNGage荒しは>>818
0822デフォルトの名無しさん
NGNG今,hostsファイルに
10.0.0.1 hostname
と書いてあるとしたら
10.0.0.1 hostname hostname.local
という風にaliasを付け足せ。
そして, gethostname("hostname.local")で引く。
>>809
お前さんは一体何をしようとしているんだ?
0823810
NGNGpPort って書かれてるからポインタ臭いなとオモタワケです。
わざわざ (WORD) ってキャストする理由も他に無いだろうし。
あと >>817 が言っているように SO_REUSEADDR つけ忘れてて
2度目以降が失敗、という可能性もありますね。
非ポインタを pPort という変数にしたり、あそこに (WORD) なんてキャストを
入れたりすることから、C そのものにも慣れていないのでは、と思いました。
0824デフォルトの名無しさん
NGNGGetAdaptersAddresses()でいけまつた!
ただ取得したデータのフォーマットがよくわからんでし (´・ω・`)
ググルとIPv6マガジンのサイトがひっかりまつ。http://www.ipv6style.jp/jp/apps/20030711/20030711_p.shtml
が、アドレスファミリの表示とかはあるものの肝心のIPアドレスの表示処理がないでつ。
で、テキトウにあたりをつけてやってみたところ取得できますた。以下やっつけのコードの一部分でつ。
struct sockaddr_in6 *in6;
unsigned long len;
IP_ADAPTER_ADDRESSES *adaddr;
FILE *fp = fopen("/Prog/ip.txt", "w");
GetAdaptersAddresses(AF_INET6, 0, NULL, NULL, &len); ← まずこれでサイズを取得するらすい
adaddr = (IP_ADAPTER_ADDRESSES*)calloc(1, len);
if (fp != NULL) {
char tmp[64] = "";
GetAdaptersAddresses(AF_INET6, 0, NULL, adaddr, &len); ← で、ここで情報を取得
in6 = (struct sockaddr_in6*)adaddr->FirstUnicastAddress->Address.lpSockaddr; ← おもいきしテキトウにキャストしてみた
inet_ntop(AF_INET6, &in6->sin6_addr, tmp, sizeof tmp); ← inet_ntop()無いっていわれたけど別のとっからソース持ってきた
fprintf(fp, "|%s|\n", tmp);
fclose(fp);
}
これで WindowsCE(PocketPC 2003) で IPv6アドレスが取得できますたヨ。
ありがとうエロイ人!∩(`・ω・´)∩
0826デフォルトの名無しさん
NGNGつぶすのってどうしたらいいんですか?
0827デフォルトの名無しさん
NGNG受信してほっとく
または
受信しない
0828826
NGNGプログラムA、Bがあるとします
(A=特定のサーバーソフト、B=ファイヤーウォール)
Aがアクセプトで特定ポートで接続待機してて
外部から接続要求をいつでも受け付けるような状況で
Bが特殊な操作をすることでAのアクセプトからソケットを
生成することを阻止するようなことってできるんですか?
0829デフォルトの名無しさん
NGNGBはルータなんだから出来ます。
IPプロトコル、ルーティングから勉強し直すといい。
Comer本でも読んで。
0830デフォルトの名無しさん
NGNG質問と無関係の返事してもしようがないような気が・・・
>>828
モダンなOSならカーネル側にそういった操作を支援する機能があって、
それを用いるのが一般的だと思います。
0831デフォルトの名無しさん
NGNGWindowsならフィルタドライバ、BSDならbpf(BerkleyPacketFilter)かな。linuxはしらね。
0832デフォルトの名無しさん
NGNGSolarisはipfilter。
0833802
NGNG既に alias を定義済みでしたので、gethostbyname()に alias を渡したところ
hosts 上の IPアドレスが返却されました。
結局 >>805 で指摘されたように
コンピュータ名と hosts ファイルのホスト名が同一だったため、
NETBIOS名に対応する IPアドレスが返却されていたようです。
ただ、コンピュータ名とホスト名に別の名前を定義するのは、
なんとなく違和感がありますので alias 使用することにしようと
思います。
質問に回答していただいた皆さんありがとうございました。
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNGこんなのはどうかな?
http://www.packetfactory.net/projects/libnids/
0836デフォルトの名無しさん
NGNGnice!
えんがちょ
0837デフォルトの名無しさん
NGNGfor(;;){
acsept(****);
close(****);
}
と
for(;;){
send(****);
}
だったら
OS、ネットワークの面でどっちが良いですか?
0838デフォルトの名無しさん
NGNGfor(;;){
acsept(****);
close(****);
}
と
for(;;){
send(****);
}
だったら
OS、ネットワークの面でどっちが良いですか?
0839デフォルトの名無しさん
NGNG要するにどっちが負荷が軽いですか?
0840デフォルトの名無しさん
NGNG自分で試せって。
0841デフォルトの名無しさん
NGNGクソありがとう
0842デフォルトの名無しさん
NGNGbuf[1024]のようにメモリ確保をしておいて、このバッファにファイルを随時読み出して
sendtoにぶちこんで送信しています。そこで少し疑問が出てきました。
光やADSL等の帯域のでかさ加減によって
sendtoにぶちこむbuf[1024]の大きさは調整したほうがより早く送受信が行える
なんてことはありますか?
よくソフトウェアでは「回線なにつかってる?」とか聞いてきますよね。
あれってこのバッファの大きさを調整してるんですか?
0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNGMTU setsockopt ioctl とかでググレ
0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNGH.323とかリアルプレイヤーとかWMPとか色々あるが?
0847デフォルトの名無しさん
NGNGうーんそういうのじゃなくて
自分でプログラム作ってネットワークの勉強したいんですよね。
かなり前から猫でもわかるネットワークプログラムっていう本を買って
ネットワークを勉強してるんですが
こういう本にはそういう上級なテクニックは乗ってないんですよね
なにかそういうテクニックがのってるちょっとレベルの高い本で
お勧めのやつないですか?
0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNG通信なんてただデータを送受信するだけだし
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG最近のNW環境なら、別にまずくない。
0855デフォルトの名無しさん
NGNGDirectShowで取り込むんだから、まずはそっち方面からでそ。
0856デフォルトの名無しさん
NGNG確かにネットワークで実際のアプリ作成時のプロトコルの設計や
ノウハウをしっかり書いた本ってないよな。
0857デフォルトの名無しさん
NGNG0858デフォルトの名無しさん
NGNG英語のならあると思うよ。売れないから翻訳されないだろうけど。
アドベンチャーゲームの作り方、なんて本ならいくらでも日本語で出てるのになあ。はあ。
0859デフォルトの名無しさん
NGNG3WAYハンドシェイクってコネクションを確立するときに自動的にやるものだから
Winsockの場合TCPソケットで「connect()」呼び出せば勝手にやってくれてんじゃないの?
普通プロトコルを実装するのはアプリ層のものでトランスポート層以下のプロトコルは
再実装しないんじゃない?
間違ってたらスイマセン。
0860デフォルトの名無しさん
NGNGObject***Streamをかぶせれば簡単に通信できて
ネットワークアプリケーションが楽に作れるような気がするんですがどうでしょうか?
プロトコルの実装とかC++との互換性抜きにすれば・・・
0861デフォルトの名無しさん
NGNGすまんが、何を言いたいのかさっぱりわからん。
0862デフォルトの名無しさん
NGNGいつまでも あるとおもうな コネクション
0863デフォルトの名無しさん
NGNGスレチガイ
ここはプログラム板
下手糞な茶々入れるなや
>>846
とりあえずDirectPlayとかのサンプル探してみたら?
それかUDPで作るとか・・・
0864デフォルトの名無しさん
NGNGお前の頭の中はどうなってるんだ?
0865デフォルトの名無しさん
NGNG中の人などいない!
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG試すがいい。
0868デフォルトの名無しさん
NGNG0869デフォルトの名無しさん
NGNG>同一ポートでTPCとUDPのデータ受けたりできるの?
あえて言おう、"TPC"は無理だ。
0870デフォルトの名無しさん
NGNGググレ。
で、TPCッテナニ???
0871デフォルトの名無しさん
NGNGTCPで開いたポート番号とUDPで(ry)は無関係だ
0872デフォルトの名無しさん
NGNG仮に出来てもルータに殺されそう
0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNGそれって要するにエロgあqwせdrftgyふじこlp;@:「」
0875デフォルトの名無しさん
NGNG他のレイヤーには干渉しないのがプロトコルの礼儀
0876デフォルトの名無しさん
NGNGふつーRMIとかCORBAとか使うんじゃなかろーか。
0877デフォルトの名無しさん
NGNGつかObjectを簡単にbinaryにシリアライズできることを活用するべし
通信路はHTTPでも生TCPでもかまわない
0878デフォルトの名無しさん
NGNG...入門
、という本を読みはじめた。
サンプルがたくさん載っていて、
解説を読んでる時間より、
キーボードをがちゃがちゃいわせている時間のほうが長い。
むつかしそうな構造体のメンバに
なにやら値を入れて、それから一連の関数を呼んで...
という手続きが、むつかしそうで...
だったのだが、
それは"儀式"のような定型化した一連の手続きであって
C++でいうところの
コンストラクタのような感じで
int を渡したら sockfd が返るような関数を書いて、
それを使いまわせば、楽ができるようだ。
通信自体もSOCK_STREAMだと、 データの送受は
単にsockfdを読み書きすればいいだけなので
チャットぐらいなら、とても簡単のようだ。
難しいのは、両端で動いているプログラム相互で
タイミングを合わせるとか、同期をとるとか、そのへんのようだ。
そのうち本物のUNPにも挑戦...できたらいいなと思う。
0879デフォルトの名無しさん
NGNG0880デフォルトの名無しさん
NGNGソケット使ってるプロセスってわかるもんなの?
0881デフォルトの名無しさん
NGNG若干スレ違いですが、自分のUser-agentやIPアドレスなどを
表示してくれるページを教えてください。
以前、自宅サーバー関連のサイトで見つけた事があるのですが
忘れてしまいました。
お願いします。
0883デフォルトの名無しさん
NGNGどうもありがとうございました。
0884デフォルトの名無しさん
NGNG処理を試したのですが、WaitForMultipleObject の
処理がいつまでたっても戻ってこない・・・なぜ?
スレッドの数を減らすとうまくいくときもある。
ちなみにrcvthread は connect, send, recv をして
引数で与えた番号をファイル名にして保存して終わるスレッド
です
int _tmain(int argc, _TCHAR* argv[])
{
unsigned short ver = MAKEWORD(1,1);
WSADATA wsadata;
HANDLE vthread[10];
WSAStartup( ver, &wsadata );
for( int i = 0; i < sizeof(vthread)/sizeof(HANDLE); i++ ){
unsigned int lth;
vthread[i] = (HANDLE)::_beginthreadex( NULL, 0, recvthread,(void*)i, 0, <h );
}
WaitForMultipleObjects( sizeof(vthread)/sizeof(HANDLE), vthread, TRUE, INFINITE );
for( int j = 0; j < sizeof(vthread)/sizeof(HANDLE); j++ ){
CloseHandle( vthread[i] );
}
WSACleanup();
return 0;
}
0885デフォルトの名無しさん
NGNGrecvthread()の中身は?
あと、本物のコードではちゃんと全てのAPIエラーチェックしてる?
してなければまずはそれから。
大方GET requestの送信辺りでコケてて、でもエラーチェックして
ないのでそのまま受信待ちに入ってブロックしたまんま、とかじゃ
ないかと思うが。
0886884
NGNG確かに受信待ちに入ってブロックしたまんまでした
けどsend は成功しているみたい
受信待ちループが駄目っぽいのはわかった
以下がそれです
受信待ち失敗と終了を知ることができずにずっとrcvが失敗している
っぽいですね
while(1){
rcvlen = recv( sock, recvbuffer, sizeof(recvbuffer), 0 );
if( rcvlen <= 0 ){
printf( "receive complete\n");
break;
}
prebuffer = buffer;
buffer = new char[prelen + rcvlen];
memcpy( buffer + prelen, recvbuffer, rcvlen );
if( prebuffer ){
memcpy( buffer, prebuffer, prelen );
delete [] prebuffer;
}
prelen = prelen + rcvlen;
//printf( "total %d kbytes...%x\n", prelen / 1024, GetCurrentThreadId() );
}
0887デフォルトの名無しさん
NGNGファイル送受信プログラムくらいは作ったことがありますが、何しろ独学だったもので基本は無知なので
お恥ずかしい質問だと思いますが…。
こういうことはWindowsプログラムで可能でしょうか。
ある通信クライアントがあり、それがaaa.aaa.aaa.aaa:5000につなぐとします。
このコネクト先を捻じ曲げて、自作のプログラムに接続させることはできますでしょうか?
そしてその自作プログラムはaaa.aaa.aaa.aaa:5000につなぐことにより
中間に入り串のような役割を果たせるので、例えばデータの中身を送信前にチェックしたり、
受け取ったデータを改ざんしてクライアントに伝えたりすることができるようになると期待しています。
ノートン先生あたりがやっている気がするなー。と思ったので妄想してみました。
知っている方いらっしゃいましたら、やり方のとっかかりなどご教授お願いいたします。
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG名前解決ようのファイルですよね?
それとも
127.0.0.1 aaa.aaa.aaa.aaa
のように、あるIPを別のIPに摩り替えることもできるのでしょうか?
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG偽者のws2_32.dllを作って、クライアントのフォルダと同じ場所におくってのが正解ですかね?
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGアプリケーションを問わない通信の横取りや加工がしたいのなら、
>>831-832あたりにあるような、OSが持ってる支援機能を使うのが一般的。
Windowsに限定するなら、プロキシDLLの設置やAPIフック等で局地的に似たようなこともできるが、
スレ違いなので該当するスレで聞くか、自分で調べれ。
0894デフォルトの名無しさん
NGNGTPC は知らんが、UNPは文脈上 UNIX NETWORK PROGRAMMING (R・スティーヴン著)のことだろう。
>878が現在読んでるのは UNIXネットワークプログラミング入門 ということらしいから。
0895デフォルトの名無しさん
NGNGところ「6」と・・・
エラーコード6ってなんですか?!
普通は10023とかそういう値じゃ・・
0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNGWin32のエラーコードかな。
だとすれば、VC++6.0付属のError lookupによると
>ハンドルが無効です。
だそうだが…
0898895
NGNG>897
なるほど・・勉強してみます。
解決
単に初期化していない変数を引数に使ってたマヌケでした
0899デフォルトの名無しさん
NGNGWindowsでプロセスごとのTCPパケットフィルタ作りたいんだけどさ、
ソケット使ってるプロセスってわかるもんなの?
0900デフォルトの名無しさん
NGNG無理。
でもNEGiESやNetLimiterは実現している。
この矛盾の答えはいかに?
0901デフォルトの名無しさん
NGNGUDPでconnectした場合の挙動ってどうなるんですか?
TCPのエラー訂正なしのバージョンとしてコネクション型が使えるの?
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNGconnectで指定した相手以外のパケットが捨てられて、
recvfromで拾えなくなるんじゃなかったっかな…
0904デフォルトの名無しさん
NGNGデフォルトの送信先を設定するだけでは。
0905デフォルトの名無しさん
NGNGプログラミングじゃないのですがn個の数字を基本選択法(選択ソート)で昇順に並び替えるアルゴリズムをフロチャートで示せ。
ってわかりますか?
0907デフォルトの名無しさん
NGNG作ったんだけど、ここにVC++からアップロードしたい
なんかサンプルになりそうなサイトある?
0909デフォルトの名無しさん
NGNGサーバアプリケーションを自前で作るほうが楽じゃんって思うのは
激しく私だけでしょうか?
0910909
NGNG0911デフォルトの名無しさん
NGNG\ そんなエサにクマー
(・(ェ)・) 三=ズザー
0912デフォルトの名無しさん
NGNG運用とかスケーラビリチーとか考えるとそうでもない
0913デフォルトの名無しさん
NGNGどうせ Java なら >>912 の理由もあるし、JSP+J2EE でも別にイイや、ということでは。
フレームワークのオーバーヘッドも大したことないし。
検索エンジンのように本格的なチューニングが必要でかつ処理自体も重いものだと、
そもそも Java は使われないことが多いし・・・
0914デフォルトの名無しさん
NGNG> 検索エンジンのように本格的なチューニングが必要でかつ処理自体も重いものだと、
> そもそも Java は使われないことが多いし・・・
そりゃ、RDBだってJavaで書いてないって(w
0915デフォルトの名無しさん
NGNG0916907
NGNGどうにも難しいな
0917tester
NGNGwinsock2 で IPv6 な UDP クライアントを作っているのだが、
connect() すると select() で read_fds に UDP ソケット入れると、
読み込み可能の有無にかかわらず、必ずタイムアウトしてしまう。
IPv4 だと動作する。 getaddrinfo() に AF_INET6 指定させるとだめのご様子。
select() はそういう挙動をするもの?教えてえらい人!
環境: Visual C++
0918デフォルトの名無しさん
NGNG口調は統一してください。
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNGわかりました。
0922デフォルトの名無しさん
NGNGどうにか早くする方法はないでしょうか?
0923デフォルトの名無しさん
NGNG256個くらいのスレッドでまわしたら?
0924名無しさん@そうだ選挙に行こう
NGNGルーターをスキャンしてみたんですけどちゃんとした結果が出ませんでした。
ほかのスキャナーでやったりスレッド数を64に落とすと80番ポートが開いてるのがわかるんですが、
256個のスレッドでやると80番ポートに反応しません
これってプログラムかなんかの上限が関係してるんでしょうか、それともハード的な問題でしょうか?
0925名無しさん@そうだ選挙に行こう
NGNGプログラムの問題。
0926名無しさん@そうだ選挙に行こう
NGNG0927デフォルトの名無しさん
NGNG0928ヽ(´ー`)ノ ◆.ogCuANUcE
NGNGnmap を使う。開発期間も短縮できてオススメ。
0929デフォルトの名無しさん
NGNGその顔文字嫌い
0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGカックイイ
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNG0935デフォルトの名無しさん
NGNGまだ送信してないかも知れないかも知れない。
0936デフォルトの名無しさん
NGNGクラサバでクラの方がいきなり強制で回線を切断したりすると
sendするとSIGPIPEが発生するんですが、そのシグナルをキャッチ
して、エラーのコネクションを通常処理で切りたいのですが
signal(SIGPIPE,hoge) としてもどのコネクションかわからず
回線切断できないのですが、どのようにしたら強制切断された
ソケットを特定&切断できますか?
ちなみにタイムアウト処理をいれているのでSIGPIPEを無視すれば
いいのですが・・・
0937デフォルトの名無しさん
NGNG0938デフォルトの名無しさん
NGNGあ、なるほど。
無理に引数で渡さなくともグローバル使えばできますね?!
グローバル・・・
助言どうもです。
0939デフォルトの名無しさん
NGNG0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNGsigaction使うとSIGPIPEが起きた時にsiginfo_tのsi_fdに保存してくれる実装はないのかね。
0942デフォルトの名無しさん
NGNG0943デフォルトの名無しさん
NGNG結局この形が一番無難なのかな?
実装したのは
(void) signal(SIGPIPE, SIG_IGN);
と、いう感じで無視しといて
int nRet = send(......)
if(nRet==-1)
{
//エラー処理
}
と、いう形ですね。
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNGそんな感じだと思います。
一応、これ ttp://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#closed
0946デフォルトの名無しさん
NGNGそんな感じだってさ。
0947デフォルトの名無しさん
NGNG0948デフォルトの名無しさん
NGNG>>942かよ!
0949デフォルトの名無しさん
NGNGテンプレについての要望はそれまでにね。
>>6
> pc2はpc5に直しておけよな
> Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
> Port7 http://pc5.2ch.net/test/read.cgi/tech/1063035045/
これ忘れずに。あと、
> ネットワークプログラミングの基礎知識
> http://x68000.startshop.co.jp/~68user/net/
は http://X68000.q-e-d.net/~68user/net/ に移転している。それ以外の
リンクは大丈夫っぽい。
0950デフォルトの名無しさん
NGNGおい、おいそんなところのリンク貼るなよ、ぼけ
あんなのくずだぞ
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG何の粘着だよ
リンク先覗いたがサンプルが多くて結構使えるじゃん
0953デフォルトの名無しさん
NGNG粘着・・・?
0954デフォルトの名無しさん
NGNG返り値見てないなど基本的なところがなってなかったり、
ちょっちピントハズレな記述もあるし。
あまり勧められないな、と俺も思う。
0955デフォルトの名無しさん
NGNGとりあえず動けサンプル
なんだからいいんじゃないか
まあそろそろ
きちんと全部見守る優秀なサンプル
ってのもほしいけど
ネット関係ない場合多いし
0956デフォルトの名無しさん
NGNG0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGいいよ、作るから待ってなよ
あんな、ネットワークのネの字も知らないような奴が適当に書いたページ
じゃなくてしっかりしたものを書きます。
0959デフォルトの名無しさん
NGNGselect、thread、複合型まで作って頂けると大変ありがたい。
0960デフォルトの名無しさん
NGNG1ヶ月単位一人1票で投票するシステムの作成を請け負ったんですが
IP・cookie以外で複数投稿を無効にできそうな仕組みは無いでしょうか?
上記2つの方法だと、どう考えても不完全そうなので。
いい案がありましたらご教授お願いいたします。
0961960
NGNG板違いですね・・・逝って来ます。
0962デフォルトの名無しさん
NGNG別に板違い気はしないけど。
XPのアクティベーションみたいなことをやってみるとかかなぁ。
0963デフォルトの名無しさん
NGNG> ちょっちピントハズレな記述もあるし。
たとえばどの辺? 初心者な俺が見ても、へぇとしか思わないけど、
知ってる人から見るとどこが変なのかなぁと思って。
0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNG必ずこういうことを言う奴がいるよな
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG作ってくれるみたい (>>958) だから別に良いのでは?
0969デフォルトの名無しさん
NGNGAPOP
0970デフォルトの名無しさん
NGNGhttp://www5e.biglobe.ne.jp/~liquor/raytrace/
0971デフォルトの名無しさん
NGNG久しぶりにみたぞ、あんなのw
0972デフォルトの名無しさん
NGNG0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNGわかってるじゃん
0976デフォルトの名無しさん
NGNGだけど、現実問題としては・・・・
データが来ない時は一生待ってください。
0977デフォルトの名無しさん
NGNG0978デフォルトの名無しさん
NGNG0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG空振りが多すぎるんだな。だから非同期APIとかに切り替えるべし。
0981デフォルトの名無しさん
NGNG0982デフォルトの名無しさん
NGNG0983デフォルトの名無しさん
NGNG0984デフォルトの名無しさん
NGNGところで次スレってもう立ってたっけ?
0985デフォルトの名無しさん
NGNG> 空振りが多すぎるんだな。
違うよ。
多重プロセス、マルチスレッド対応のselect(2)なら問題ない。
select(2)の一番の問題は、bitmaskの処理が重い。
>>3のhttp://www.kegel.com/c10k.htmlに論文へのリンクがある。
0986デフォルトの名無しさん
NGNG真剣に聞いてるなら、過去スレ読んでみない?
HTML化待ちで読めないかな?
その話題、なんだか知らないけど荒れるんだよ…
0987デフォルトの名無しさん
NGNG0988デフォルトの名無しさん
NGNG0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1090385857/
0993デフォルトの名無しさん
NGNG空振りが多いからスレッドに分けざるを得ないというのは
selectの明らかな欠点だし。
それにオーバーヘッドを比較するならselect v.s. pollでないの。
ところでselectとepoll/kqueueって計算量って前者はO(n), 後者はO(1)であってる?
0994デフォルトの名無しさん
NGNGselect/poll は見た感じが O(n) ぽいよね。
以上、僕の感想ですた。
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。