1read 100read
2012年3月プログラム52: ネットワークプログラミング相談室 Port27 (846)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
VisualBasic6.0 対 VisualBasic .NET 2003 (458)
自動巡回ソフトを作りたい。 (371)
「Cでプログラミングするには人生は短すぎる」か? (310)
Visual Studio 11 Part1 (163)
Git 4 (242)
VB6でLinuxを作る方法を教えてください!! (203)
ネットワークプログラミング相談室 Port27
- 1 :10/12/25
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port26
http://hibari.2ch.net/test/read.cgi/tech/1269343909/
関連スレ
ネットワークプログラミング雑談
http://hibari.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://hibari.2ch.net/test/read.cgi/tech/1086238859/
- 2 :10/12/25
- 過去スレ:
Port26 ttp://hibari.2ch.net/test/read.cgi/tech/1269343909/
Port25 ttp://pc12.2ch.net/test/read.cgi/tech/1255459388/
Port24 ttp://pc12.2ch.net/test/read.cgi/tech/1246895188/
Port23 ttp://pc12.2ch.net/test/read.cgi/tech/1230466044/
Port22 ttp://pc11.2ch.net/test/read.cgi/tech/1222603744/
Port21 ttp://pc11.2ch.net/test/read.cgi/tech/1204287577/
Port20 ttp://pc11.2ch.net/test/read.cgi/tech/1186418855/
Port19 ttp://pc10.2ch.net/test/read.cgi/tech/1159692799/
Port18 ttp://pc11.2ch.net/test/read.cgi/tech/1171029896/
Port17 ttp://pc8.2ch.net/test/read.cgi/tech/1148944560/
Port16 ttp://pc8.2ch.net/test/read.cgi/tech/1136005644/
Port15 ttp://pc8.2ch.net/test/read.cgi/tech/1128088448/
Port14 ttp://pc8.2ch.net/test/read.cgi/tech/1118469143/
Port13 ttp://pc8.2ch.net/test/read.cgi/tech/1109793931/
Port12 ttp://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port11 ttp://pc5.2ch.net/test/read.cgi/tech/1096187183/
Port10 ttp://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port9 ttp://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port8 ttp://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port7 ttp://pc5.2ch.net/test/read.cgi/tech/1063035045/ ★行方不明
Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
- 3 :10/12/25
- 図書コーナー:
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
そのソースコード
http://www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
http://www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
Linux/POSIXソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
Windowsソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320029992/
- 4 :10/12/25
- マスタリングTCP/IP RTP編
http://www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
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/
Visual Basicではじめるネットワークプログラミング超入門
http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/
- 5 :10/12/25
- URL抜粋:
★規格
RFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
- 6 :10/12/25
- ★プログラミング
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
C10K ヘヴィーロードサーバ(日本語訳)
http://www.hyuki.com/yukiwiki/wiki.cgi?TheC10kProblem
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
http://www.whitefang.com/rin/
Java で packet capture
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html
BoostSocket
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
http://www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
http://X68000.q-e-d.net/~68user/net/
- 7 :10/12/25
- ★ツール類
ethereal - http://www.ethereal.com/
Wireshark - http://www.wireshark.org/
tcpdump - http://www.tcpdump.org/
Windump - http://netgroup-serv.polito.it/netgroup/tools.html
WinPcap - http://www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - http://www.employees.org/~bmah/Software/pchar/
Packetyzer - http://www.networkchemistry.com/products/packetyzer/
libevent - http://www.monkey.org/~provos/libevent/
★プロトコル
TTCP
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.html
UDP Hole Punching
http://homepage3.nifty.com/toremoro/p2p/firewall.html
★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
- 8 :10/12/26
- WSAGetLastErrorでエラーコード取得したんだけど、0だったんだが、
これどういう意味?
WSAGetLastErrorって連続で呼び出したら、エラーコードの情報が
リセットされることってないよね?
ちなみに0が返ってくるのは、クライアント側のウィンドウを強制的に
終了させた時です。
そのときにWSAGETSELECTERRORでエラーになったので、
WSAGetLastErrorでエラーコード取得してみたら0だったんです。
- 9 :10/12/27
- winsock2.hで、ローカルアドレスをプロミスキャスモードでtcp通信を全て監視したいのですが、
while(1) {
recv();
すこし重たい処理;
}
とするとrecvのデータが欠落(跳んでしまう)してしまうみたいなんですが、どう対処したらいんでしょうか
考えたのは
buff格納キューテーブル
thread1 {
while(1) {
recv();
buffをキューテーブルに格納
}
}
thread2{
while(1){
キューテーブルを参照、処理
対象データを取り除く
}
}
という素人案ですが、格納にどれくらい負荷が掛かるかも心配で、
何かいい案はないでしょうか?よろしくお願いします
- 10 :10/12/27
- 「すこし重たい処理」を「とても軽い処理」にチューニングする。
- 11 :10/12/28
- WSAAsyncSelectを使ってノンブロッキングモードの通信を行っています。
connect関数を使ったのですが必ずエラーになります。
WSAEWOULDBLOCKのエラーが返ってきます。
これは非同期処理においては当たり前のことなのでしょうか?
もしそうなら、SELECT等やタイムアウト時間を自分で設定するしかないのでしょうか?
これは結局同期処理になってる気がするのですが、CONNECTのときは仕方ないのでしょうか?
- 12 :10/12/28
- WSAEWOULDBLOCK は、
本来はブロッキングする処理だけどノンブロッキングモードだからブロックせずに制御を返したよ(もちろんまだ完了してないよ)
っていう意味だから、あなたの望む結果じゃないのでしょうか?
それともノンブロッキングモードを誤解しているのでしょうか?
単に WSAAsyncSelect の FD_CONNECT の存在に気づいてないだけでしょうか?
- 13 :10/12/28
- >>11 これは非同期処理においては当たり前のことなのでしょうか?
yes
- 14 :10/12/28
- >>11
状況が分からないが
connect関数はコール後すぐに制御を返すが、実際にはまだ接続が完了していない。
その状態であることを知らせるのがWSAEWOULDBLOCKであり、
接続が完了したことを通知するのがFD_CONNECT。
connect関数コール後から接続完了(CONNECT)まで何も処理することがないなら一見するとブロッキングモードと同等になる。
しかし、それらの処理がメインスレッド上で行われている場合、ブロッキングするconnect関数コールは、他のWindowsメッセージの処理すらされなくなる。
- 15 :10/12/29
- >>12-14
本当にありがとうございました。
FD_CONNECTを待とうと思ったんですが、
色々面倒だったので、select使うことにしました。
メインスレッドで実行しますが、接続時なんで多少ブロックされてもいいと判断しました。
- 16 :10/12/29
- >>15
select()の待ち時間を0秒にしてもグッとブロックされたりしますか?
それともselect()を使う限りブロックしてしまうものなのでしょうか?
- 17 :10/12/31
- winsockの非同期通信で1台のパソコンで通信のプログラムを作っています
送信側と受信側では同じサイズと間隔で下のように送受信しています
for(i=0;i<j;i++)
send(sock,&buf[l],k);
l=l+197;
Sleep(16);
1回のループに196byteなら問題なく送信できるのですが、197にするとエラー(WSAEFAULT)が
発生します。
これは秒間12KBの送受信になるのですが
同じ1台のパソコンでapacheを起動し画像を送受信すると重い画像でも表示できます
原因が思いつく方がいましたらご教授下さい
- 18 :10/12/31
- >>17
お前のバグ。
WSAEFAULTは&buf[l]が有効なメモリアドレスをさしていない場合に出力される。
- 19 :10/12/31
- てすと
- 20 :10/12/31
- 解決しました
原因はサーバ側でrecvのbufの使い方が間違ってました
recvは必ず指定したサイズを受信するわけではないので
不便だと思い下のような関数を作ってたのですが
おそらくはcのアドレスを直接渡したのが原因か
またはcのアドレスをサイズ分移動させた後のアドレスと
固定のサイズの4096が一致しないのが原因かと思います
正しい原因は調べてないですが、改善例のように修正したら
問題なく動作するようになりました。
int recv2(SOCKET s,char buf[],int len){
char *c=buf;
char wrk[4096];
while(1){
i=recv(s,c,4096,0);駄目な例
i=recv(s,wrk,4096,0);改善例
memcpy(c,wrk,i);改善例
if(i==SOCKET_ERROR){
shutdown(s,2);
closesocket(s);
return 0;
}
c=c+i;
}
- 21 :10/12/31
- c を読み込んだバイト数分進めてるついでに
len も読み込んだバイト数分減らしたうえで recv に渡す大きさを len に
- 22 :10/12/31
- winsockの非同期通信で1台のパソコンで通信のプログラムを作っています
送信側と受信側では同じサイズと間隔で送受信しています
送受信するサイズは4MBで、送信側は4MB送信できてますが
受信側は4MB受信しないで最後のrecvが0を返して終了します。
受信側でデータが無くなることは実際ありえるのでしょうか?
ちなみに毎回決まったサイズ受信して終了します。
- 23 :10/12/31
- >>22
>送信側は4MB送信できてますが
ちゃんと戻り値を確認してのこと?
- 24 :10/12/31
- >>23
sendの戻り値は確認しています。
- 25 :10/12/31
- ちょっと連絡が来ないからといって破局と決定するのはどうかと
- 26 :10/12/31
- >>25
普通どれくらい待つのでしょうか?
recvが最後に0を返しても送信サイズと受信サイズが一致しないとループし続けるように
コーディングしましたが、1分ぐらい延々とrecvが0を返し続けました。
- 27 :10/12/31
- 受信データを少し調べてみたら
途中のデータが欠損しているようです。
最後に特定の文字列を送信してそれは受信できていました。
- 28 :10/12/31
- 結局原因は分からなかったのですが、最初のデータが欠損していましたので
最初のデータを送信する前に1秒Sleepすると問題なく送受信できました。
- 29 :10/12/31
- >>22,28
なんか根本的に間違っていると思う。
やっているのは「非同期通信」なんだろ?
その場合、情報が常に必ず届くという保証がwinsock自体にない。
だから、届かなくてもいいような仕組みを持った通信経路を設計する。
これには色々ある。今の考え方では、すぐに行き詰まると思われ。
- 30 :10/12/31
- >>29
申し訳ない
同期通信の間違いでした。
TCP/IP自体データが保障されていると思ってたんだけど
違うのでしょうか?
- 31 :10/12/31
- >>30
同期通信なら、保証されるが、それはバグがない場合だ。
何かがバグってるな。
- 32 :10/12/31
- あなたはここで質問するレベルですらないので
>>1のリンクのサイトや本を見てからにしてください
- 33 :10/12/31
- ??到達性に同期も非同期も関係ないだろ?
- 34 :10/12/31
- >>22
TCPなのかUDPなのか書け。
#UDPな悪寒。
- 35 :11/01/01
- 逆。
メッセージ境界が保証されていないTCPで、メッセージ境界が保存されて
いると仮定してプログラミングしてるんだろ。
- 36 :11/01/01
- >>24で戻り値は確認していると言っているからおれはないと思うが。
ただSOCKET_ERRORかどうかしか見てなくて、実際に受信バイト数までは確認していないってことか?
- 37 :11/01/01
- >>36 Unixでも初心者に良くいるよ、こうかくやつは…
if (recv(sock, buff, BUFF_SIZE, 0) == -1) {
/* エラー処理 */
}
/* BUFF_SIZE 受信したつもりになりきって buff の処理 */
- 38 :11/01/01
- >>34
TCPです
UDPは信頼性がなさそうなので
- 39 :11/01/01
- >>36
sendの戻り値でどうやって受信バイト数を取得すんだよ。
- 40 :11/01/01
- >>38
で、
n=send(sock,buff, BUFF_SIZE, 0);
n=recv(sock, buff, BUFF_SIZE, 0);
いずれもBUFF_SIZEまで送信受信できているとは限らない。
n がSOCKET_ERRORではない場合、n は実際に送信受信したバイト数になっているが、
その n の値もしっかり反映しているの?
それと、SOCKET_ERROR の場合は終了しているようなので関係ないが
送信受信において SOCKET_ERRORが戻ってきた場合のWSAGetLastError() の戻り値も確認する。
WSAEWOULDBLOCK が戻ってきてれば終了するのではなく、またループに戻るようにする。
- 41 :11/01/01
- >>40
sendとrecvの戻り値は確認しています。
戻り値が0より大きい場合にその戻り値をlenとしてmemcpyするように
しています。
WSAEWOULDBLOCKについては知りませんでした。
ご指摘ありがとうございます。
- 42 :11/01/03
- TCP/IP通信でWSAAsyncSelectを使って非同期通信をしています。
データを適当なバイト数送るとします。
受信側がそのうち200バイトしか受信できなかったとします。
受信できるまでrecvループしようとしましたが、その間はそこで処理が
止まってしまうので、ウィンドウが固まってしまいます。
なので、一度だけ受信した後、一旦受信処理ルーチンを抜け、
また再度FD_READメッセージを待ちます。
そこで受信できなかった分を受信し、先ほど受信したデータの後ろにMEMCPYでデータを
くっつけようとします
そのためには先ほど受信したデータのバイト数を記録しておく必要があると思います。
さらに、相手は何バイトデータを送ってくるかわかりません。
この場合、まずデータが何バイト送ってきたのかを記録しとくところまではできますが、
何バイトまで受信すればよいのかわかりません。
単純にrecvがsocket_errorを返し、WSAEWOULDBLOCKを返したときが受信データは全て
受信し終わったと判断してよいでしょうか。
- 43 :11/01/03
- 普通は送られてくるデータの先頭あたりにデータ長の情報が含まれる
それをヘッダと言うことが多い
どういう形の書式にするかとかを決めるのがぷろところろろr
- 44 :11/01/03
- ヘッダを作って、最初にその数バイトだけ読んでデータの大きさを調べて、
その分だけ受信するってことですか。
いろんなプロトコルがありますが、データサイズだけわかればなんとかなりそうなので、
自分独自のヘッダでも構わないんですよね?
- 45 :11/01/03
- 馬鹿の考え休むに似たり
- 46 :11/01/03
- どうにかするわ
- 47 :11/01/03
- 一度、標準入出力で書いてみりゃ良いのに…
ストリーム故、同じ思考にいきつくと思うが (fgets はそうでもないか)
- 48 :11/01/03
- >>44
データ長があらかじめ判らないときには
データ末尾に終了符号をつけることもある
- 49 :11/01/03
- その場合データ中に終了符号と同じデータを含めることは出来ない
- 50 :11/01/03
- こういうのデザパタで何て言うんだっけ?
- 51 :11/01/03
- 改行区切りパターン(いま考えた)
- 52 :11/01/03
- 皆さんありがとうございます。とにかくやってみます!
- 53 :11/01/03
- まとめてやるんじゃなくて、1バイト毎にやったほうがいい時もある。
- 54 :11/01/03
- なにいってんだおまえ
- 55 :11/01/04
- >>48
ダサい設計だけど、HTTP1.0のようにデータの最後まで送ったら
ソケットを閉じるという方法もある。
- 56 :11/01/04
- 別にださくないんじゃね、 ftp もそうだけど…
- 57 :11/01/04
- >>33
亀レスだが、非同期通信に到達性を保証する事は出来ないと思うのだが。
その点について俺が間違っているの教えてくれ。
まず第一に、非同期通信経路上位でのプロトコルによる同期は除いてくれ。
単純に非同期通信経路で、受信側がいつまでたってもデーターはこなかったとしよう。
その場合いつかはタイムアイトになり情報が所か無かったとしよう。
送信側は送信しているので、それが届いたかどうかは感知できない。
この場合どう考えても、情報の到達性を保証する事は出来ない。
ではないのか?
- 58 :11/01/04
- >>57
何を勘違いしてるのか分からないけど、あの文脈では同期/非同期
はAPIのモードの話で
同期:ブロッキング
非同期:ノン・ブロッキング
でしょ?
それともブロッキングのsend成功=到達とでも思ってるとか?
- 59 :11/01/04
- なんだ、ノン・ブロッキングの事を言っているのか、がっかりだな。
それを非同期の代名詞にして話す事自体がっかりだよ。あきれた
- 60 :11/01/04
- じゃあどういう意味の”非同期通信”ならTCPで到達性が保証できなく
なるのかな?
昔の非同期モデム使ったPPP回線でも(TCPの意味での)到達性は保証
されているのだが。
- 61 :11/01/04
- それにブロッキング /ノン・ブロッキング を同期/非同期って
表現するのはごく普通に行われているよ。
なにせWinSockのAPI名がWSAAsyncSelectとかだし。
- 62 :11/01/04
- >>61
それMSの表現が馬鹿なだけw
だけど、 TCP 使って非同期な通信系ってのはどうゆう意味か説明してほしいな >59
- 63 :11/01/04
- 非同期通信
非同期型API
がごっちゃになってる?
- 64 :11/01/05
- 言葉の定義の問題だから、おまえの中では非同期でいいんじゃない。
まあ、あまり大声で言わない方がいいと思うがwww。
それに、がっかりしたのも事実だし。言葉の定義はそれでもいいんじゃい。
- 65 :11/01/05
- 参考までに、IT辞書のノンブロッキングの説明部分を張っとく。
通信相手との同期を取らない点では一種の非同期通信といえるが、いわゆる非同期通信が
単に通信相手からの返事を待たない(同期を取らない)というニュアンスであるのに対し、
ノンブロッキング通信では主に、通信処理の完了を待つことによって他の処理の進行を妨げな
いことを表わしている。
- 66 :11/01/05
- >>63 おれ?
TCP ってのは、 end-end 閉じてないとだめなプロトコルなのね
で、少なくとも、
syn -> syn/ack -> ack
で、コネクションつくって、 こんなやりとりするでしょ?
[data]/ack <-> [data]/ack
この状態が、成立してる限りにおいては同期処理系なのよ
つか、state-fullなプロトコルってのは、どこかで同期する必要があるのは当たり前
もっと上のところでやるのはあんたらの勝手だけど、どの部分指して言ってるの?
ってのが 62 の主旨
- 67 :11/01/05
- 上位のAPIの動きで話が進むんだよね。
TCPの実際の動作がわかってない感じだから、どう言っていいのやら...
- 68 :11/01/05
- >>66
たとえば、HTTP/1.1は非同期。
レスポンスが返ってくる前に、リクエストを投げることができる。非同期だろ。
発端の>>22の「非同期」はWinsockの非同期系APIを指しているのだろうけど。
- 69 :11/01/05
- >>65
その説明書いた人良く分かってない感じ。
socket APIのブロッキングモードのsendは送信バッファに空きが
出来れば復帰するのであって、通信処理が完了するかどうかとは
関係ない。
- 70 :11/01/05
- チャット作ってます。
非同期通信をして、文字だけのやりとりはできるようになりました。
ですが、ユーザごとに名前をつけれてません。
名前付けたいんですが、名前のデータは文字のバッファに含めて送信すべきでしょうか?
それとも名前は名前だけで送ったあとに、後から文字のバッファを送るほうが都合がいいでしょうか?
今はクライアント→サーバにメッセージを送ったら、
サーバから、サーバに接続しているクライアント全てにそのメッセージを送信し、
リアルタイムチャットを作ろうとしているところです。
- 71 :11/01/05
- この流れで「非同期通信」の質問は釣りにしか見えない。
- 72 :11/01/05
- >>69
じゃ、そこまできちっとしたら、ブロッキングモードの通信も非同期だなwwwww
腹抱えて笑うぜwwwwwwwwwwwwwwwww
- 73 :11/01/05
- >>72
非同期で笑え
- 74 :11/01/06
- Winsock2 : UDP : 鯖側
addr は INET_ANY で create & bind -- (*)
WSAAsyncSelect FD_READ でパケ待ち
パケ到着なFD_READをきっかけに recv & 内部処理開始
内部処理後の応答を パケ送信したピアへ戻したい...
(*)のソケットに write ではうまくいかず
- 75 :11/01/06
- なぜwrite?
recvfromとsendtoを使え
- 76 :11/01/06
- あ。 単純ミスorz
recvfrom の末尾で ピアのアドレス受けとれるし…
- 77 :11/01/09
- 新スレに今気づいた俺が横からレス
>>58 >>62 どっちとも俺の解釈と違う(と思う)。
まだデータが到着してないときにrecvした場合、
データが来るまで関数が返ってこないのがブロッキング。(1)
関数が返ってきて「まだない」と言われるのがノンブロッキング。(2)
データが到着したことがわかった後で、カーネルに「俺のバッファにコピーしる」
と要求したら、コピー完了後に返ってくるのが同期。(3)
コピー完了前に帰ってきて、コピー完了が別に通知されるのが非同期。(4)
と思ってる。
unixしか知らないひとがよく非同期と誤解してるのが(2)
MSが言ってる非同期は(4)
でないかな?
- 78 :11/01/09
- すまん誤解は言いすぎだ
用語の使い方がずれてんだよ、WindowsとUnixは。
- 79 :11/01/09
- 適したスレがぱっと見当たらなかったのでここで質問させてください
今迄画像処理関連のプログラムばかりやってきて
4月からネットワークプログラムの仕事になりそうなんで
異動前に勉強したいんだが
ネットワークプログラムする以前にネットワークに関する知識(スイッOハブの知識、ネットワークの構成・設計、セキュリティetc)が無い
何かオススメの本あったら教えて
- 80 :11/01/09
- もう一個補足。Unix(Posix.1)で
recv, send は「非同期I/O」とは呼ばない。
「非同期I/O」は
aio_read, aio_write のこと。
aio_readなんて誰も使ってないだろうけど、
Windowsで言ってる非同期はまさにaio_xxxなんだぜ
- 81 :11/01/09
- >>80
わかた
ごちそうさま
- 82 :11/01/09
- >>77,80
良レスだが、自分の解釈とも異なっている。(もちろん>>58,62とも違う)
>>77の例であれば、どちらも同期(という総称的な概念を指す用語)の一種であり、
それらの違いは「データ到着」と「コピー完了」というイベント種別の違いでしかない、いうのが自分の解釈。
ブロッキングは同期(という目的)を実現する手段であり、両者を同列に比較/分類する事は無意味であると思う。
まとめると、>>77の(1)と(2)は同じだが、(3)はブロッキングモードのrecvであり、(4)はノンブロッキングモードの
非同期recvであり、さらに(3')としてノンブロッキングモードの同期recvが加わる。
Unixであれば、read/write/recv/sendは、どれもブロッキングモード/ノンブロッキングモードのどちらでも
操作を実行できる。ただしノンブロッキングモードの場合、データ未着/コピー未完であればアプリ側で定期的に
リトライしなければならないという(性能上の)問題があるため、必然的にブロッキングモードを使わざるをえなかった。
この課題を解決する為に考案(追加)されたのが、aio_read/aio_writeと呼ばれる、いわゆるAIO(非同期I/O)という仕掛け。
ちなみにLinuxのAIO実装の場合、ソケットに対するAIOはサポートされていないから、aio_recv/aio_sendという
システムコールは(まだ)存在していない(はず....)。
- 83 :11/01/09
- >>82
お前が正しい
正義はお前にある
- 84 :11/01/09
- >79
つ ttp://www.amazon.co.jp/dp/4274066770
- 85 :11/01/09
- つ http://www.amazon.co.jp/dp/4839909555
- 86 :11/01/09
- >さらに(3')としてノンブロッキングモードの同期recvが加わる。
だな。
そのノンブロッキングの同期が一番おいしいのに
そこを飛び越えてしまったのがWinsock2
- 87 :11/01/09
- ふつーIO完了ポート
- 88 :11/01/11
- 何で非同期IOの方が効率がいいっていわれてんの?
- 89 :11/01/11
- 待たなくていいから待ってる間に他のことが出来る
- 90 :11/01/11
- インタラクティブなアプレットをなにか作らないといけないのですが、誰か助けてください
- 91 :11/01/11
- おせちアプレットでも作ってください。
- 92 :11/01/11
- 重箱におせちを詰めるゲームか
- 93 :11/01/11
- ボリュームが足りないくらいがちょうどいい
- 94 :11/01/12
- >>84,>>85
レスありがとうございます。
スレ違いにも関わらず…助かります。
- 95 :11/01/15
- IPv6 そろそろ端末側も本格対応が必要なのかな
なんかITProの記事では、v4アドレスが2011年2月に
枯れるとか言ってるんだがホント?
- 96 :11/01/15
- 去年10月の時点で残り7ブロックとかそういう話でしょ。
それまでのペースを維持すれば、当然3月くらいまでに無くなるよ。
- 97 :11/01/15
- とりあえず拾ってみた。
http://www.geekpage.jp/blog/?id=2010/10/18/1
http://journal.mycom.co.jp/news/2010/11/16/074/index.html
アジア地域だと、本当に再来年あたりから
新規v4は無くなる可能性があるみたいね。
v6Readyはもう必須かもしれない。
- 98 :11/01/18
- HTTPプロトコルで
Accept-Encoding: gzip
Range: bytes=41318-
として、順次差分をダウンロードしたいのですが
gzip圧縮された差分がgzipのヘッダー情報を含んでいるらしく
レスポンスのContent-Lengthと食い違いが生じてしまいます
この場合の定番の書き方はどうなっているのでしょうか?
それとも差分ダウンロードと圧縮は同時に使用しないものなのでしょうか?
- 99 :11/01/18
- > gzip圧縮された差分がgzipのヘッダー情報を含んでいるらしく
> レスポンスのContent-Lengthと食い違いが生じてしまいます
ダウンロードした圧縮差分を順次つなげていっても
元のgzipファイルにならないという意味です。念のため
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
【Lua】組み込み系言語総合 その5【Squirrel】 (432)
VisualBasic6.0 対 VisualBasic .NET 2003 (458)
マルチスレッドプログラミング相談室 その8 (922)
Visual Basic2005やりたいんだけどアドバイス頼む (206)
★初心者にVisual C++を教えるスレ★ Part38 (236)
【Perl,PHP】LLバトルロワイヤル21【Ruby,Python】 (197)
--log9.info------------------
×同士の再婚に係る悩み (164)
離れて暮らす子供の幸せをネ斤るスレ 5 (805)
【調停】相談スレ【】 (509)
×1で結婚できたけどまた離婚したい (650)
【報道】ズッコン再婚のボッシー・堀ちえみが×2に! (230)
×1同士の再婚は必ず失敗する!・3 (196)
継父(((ママチチ))))が、連れ子を虐待多すぎ (512)
おぉ〜勘違い《40代》バツ2女 (258)
元夫がロリコンだと分かったから離婚した (132)
×女は嘘つき大王!!! (220)
バツイチ男、一緒にがんばろうぜ! Part 70 (209)
×1は再婚するな・2 (462)
元旦那が死んだら悲しいか? (543)
バツイチ&子持ちと付き合っている人の体験談 (540)
【なぜ】すごい美人と離婚した夫【なぜ】 (605)
母親が再婚したら恐怖だ (887)
--log55.com------------------
【えんどろ〜!】エレノワール・セイランはエルフの聖者【セイラ】
【えんどろ〜!】マオちゃん先生かわいい
【のんのんびより】越谷小鞠はちっちゃいお姉さんかわいい 23
【ぱすてるメモリーズ】榊亜矢香はキノコ大好きかわいい【ぱすメモ】
【どろろ】どろろちゃんは生意気ロリ可愛い!
【ラブライブ!】園田海未ちゃんはラブアローシュート♪可愛い42射目
【のんのんびより】一条蛍は巨乳だけど迷子で泣いちゃうかわいい 14
【けものフレンズ2】キュルルアンチスレ【劣化版ちゃん】
-