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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001ftp-data2007/08/07(火) 01:47:35
主にソケットに関しての質疑応答スレッドです。

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

前スレ
ネットワークプログラミング相談室 Port19
http://pc10.2ch.net/test/read.cgi/tech/1159692799/

関連スレ
Java ネットワークプログラミング 【教えて!】
http://pc11.2ch.net/test/read.cgi/tech/1086238859/
0951デフォルトの名無しさん2008/02/18(月) 23:54:40
>>948
マルチキャストってソケット関係ないじゃん?
0952デフォルトの名無しさん2008/02/18(月) 23:57:34
>>951
あるよ^^
0953デフォルトの名無しさん2008/02/19(火) 00:36:59
>>952
あるね。ごめんよ^^
0954デフォルトの名無しさん2008/02/19(火) 19:13:41
OSによるとは思うんですが、UnixドメインソケットとループバックIFでTCPではどっちが高速ですか?
0955デフォルトの名無しさん2008/02/19(火) 20:55:10
ループバック
0956デフォルトの名無しさん2008/02/19(火) 21:04:31
>>954
そんくらいはかってみれ
0957デフォルトの名無しさん2008/02/19(火) 22:02:32
>>954
悩むなら両方に対応してオプションで選択できるようにするといいよ
0958デフォルトの名無しさん2008/02/19(火) 22:16:23
「ウィンドウズだとプロセス作成が重い」という話をよく聞くのですが、
ウィンドウズでhttpサーバーを書く場合、どのような構成が適切だと思いますか?

1、1リクエスト=1プロセスを尊守する
2、いくつかのリクエスト(数十〜数百)をまとめて一つのプロセスで処理する
3、プロセスは1つ。1リクエスト=1スレッドで行う
4、プロセスは1つ。いくつかのリクエストをまとめて1スレッドで行う
5、プロセスもスレッドも1つ。すべてのリクエストを非同期で処理する
0959デフォルトの名無しさん2008/02/19(火) 22:18:26
>>958
6. apache を使う
0960デフォルトの名無しさん2008/02/19(火) 22:23:30
>>958
組み込みなら5しか選択肢はない
0961デフォルトの名無しさん2008/02/19(火) 22:25:05
>>958
プロセス生成が重いと考えているのに、どうして1と2が選択肢になるのか。

0962デフォルトの名無しさん2008/02/19(火) 22:47:20
7. 複数のスレッドですべてのリクエストを非同期処理する
0963デフォルトの名無しさん2008/02/19(火) 22:59:10
>>958
お前の書くサーバなら2で十分。
0964デフォルトの名無しさん2008/02/20(水) 00:25:57
7、プロセスチーズは雪印
0965デフォルトの名無しさん2008/02/20(水) 10:04:47
雪印はあの事件以降買ってないわ
0966デフォルトの名無しさん2008/02/20(水) 11:54:21
そうだね、雪印はちょっと怖いよね。
だから最近できたメグミルクってとこの買ってるよ。
09679322008/02/20(水) 13:00:08
>>960
マルチスレッドカーネルくらい書けよ。
0968デフォルトの名無しさん2008/02/20(水) 18:55:48
>>958
IOCP
0969 ◆0uxK91AxII 2008/02/20(水) 19:38:43
一方、IIS6ではTDIを叩いた。
0970デフォルトの名無しさん2008/02/20(水) 20:59:11
TDIってそのうち非推奨になるって書いてあるけど、次のIISはどうするの?
0971デフォルトの名無しさん2008/02/20(水) 21:40:56
IISはOSと癒着だから。
ミニポートドライバを挟み込むくらいは遣りかねない(w
0972デフォルトの名無しさん2008/02/20(水) 21:57:22
>>967
マルチスレッドカーネルつかってても、組み込みなら1スレッドで非同期で全部やる
常識でしょ
0973デフォルトの名無しさん2008/02/21(木) 09:55:45
>>972
なぜ常識なのかわかんね。
結果として1プロ1スレでやらざるを得ないことは多いけど。
0974デフォルトの名無しさん2008/02/21(木) 14:37:54
スレッド増えるとコンテキストの切り替えで遅くなるからじゃない?
0975デフォルトの名無しさん2008/02/21(木) 16:04:31
タイマによる切り替えだけじゃなくて、デバイスI/O待ちとかで積極的にdispatchするようにしとけば問題ない事が多い。
0976デフォルトの名無しさん2008/02/21(木) 21:44:32
1タスクのスタック領域4kとってるとして、100個接続裁いて100スレッドになると
400kのメモリが必要。そして、さばく接続数に比例して使用するメモリがどんどん
増える。非常に無駄。
0977デフォルトの名無しさん2008/02/21(木) 21:46:53
コンテキストスイッチに時間がかかるのも効率が悪い。

まぁ最近の携帯電話とかだと、鬼のようなスペックつんでるので、携帯電話
メーカーが作るのならいいのかもだけど。「うちのミドルウェアには、HTTP
サーバもついてますよ!1接続、1スレッド必要ですが」とかいったら、
ゼッタイそのミドルウェアは採用されないな。
0978デフォルトの名無しさん2008/02/21(木) 23:49:22
スレッドをプールしてもダメなん?
0979デフォルトの名無しさん2008/02/21(木) 23:59:31
接続数が多くなる場合はIOCP使えってのは常道みたいだが。
0980デフォルトの名無しさん2008/02/22(金) 01:36:54
Winsockの挙動について
connect()するときに、以下の条件

1.プロトコルはTCP
2.HostAddressにDNS名を指定
3.DNS応答に複数IPが含まれている(DNSラウンドロビン等)

において、DNS応答の1つ目のIPアドレスへの接続に失敗した場合、
接続再試行として、DNS応答の2つ目以降のIPアドレスへ接続を行ってくれる?

それとも、接続試行を行うのは一つ目のIPアドレスに対してのみ?

知ってたら教えておくれやす。
0981デフォルトの名無しさん2008/02/22(金) 01:49:38
おまいの使ってるconnect()とやらのパラメータには、何を渡すようになっているか知ってるか?
0982デフォルトの名無しさん2008/02/22(金) 02:58:25
がびーーーん!
参考にしたMSDNのページをよく確認したら、
MFCのCAyncSocket。

逝ってきまつ…

  ;y=ー( ゚д゚)・∵. ターン
  \/| y |)
0983デフォルトの名無しさん2008/02/22(金) 09:46:26
>>979
銭形警部?
0984デフォルトの名無しさん2008/02/22(金) 11:27:47
オレもその略号みるとそれ思い出すんだw
ICPOだけどな
0985デフォルトの名無しさん2008/02/22(金) 14:28:45
>>983-984
お前らのせいで変な見方しか出来なくなったヽ(`Д´)ノ
0986デフォルトの名無しさん2008/02/22(金) 16:44:23
linuxでIOCP無いと思った
windowsで実装されてるようなの。
0987デフォルトの名無しさん2008/02/22(金) 16:56:41
IOCPは特許になっているので、
スケジューラ絡みの部分はLinuxに実装できないが、
aio_*を使えばほとんど同じことができる。
0988デフォルトの名無しさん2008/02/23(土) 14:23:24
IOCPって特許になってたんだ。知らなかった。
0989デフォルトの名無しさん2008/02/25(月) 22:21:24
組み込みのカスは死ねよ
0990デフォルトの名無しさん2008/02/26(火) 11:35:46
日本のソフト産業でシェアあるのってほとんど組み込み系じゃねえか
0991デフォルトの名無しさん2008/02/26(火) 12:33:31
>>989
すべてお膳立てされたPCでのプログラミングしかできないカスは死ねよ。
0992 ◆0uxK91AxII 2008/02/26(火) 12:42:17
組込みと聞いて見てみたら、窓CEとかJavaなんてのは、よくある話。
0993デフォルトの名無しさん2008/02/26(火) 19:07:56
組み込みと聞いて行ってみたら…
ハードの事は何も分からないで仕切ってる奴がいて
1 octet を CHAR と書けとか
2 octet を WORD と書けとか
4 octet を LWORD と書けとか
...
言われるのもよくある話.
0994デフォルトの名無しさん2008/02/26(火) 22:08:18
別に違和感ないけど。

むしろ、UCHAR, UWORD, ULWORD とかはいらんのか? と思ってしまう。
0995デフォルトの名無しさん2008/02/26(火) 22:59:09
そういえば、これは本当に偶然だったんだけど
azn っていう略称の動作があって、せっかくなので使用可否のフラグを
char aznable;
って書いたら上司に見つかって、2人でウヘラウヘラ笑いあった。
0996デフォルトの名無しさん2008/02/26(火) 23:26:01
>>995
俺もウヘラウヘラした
0997デフォルトの名無しさん2008/02/27(水) 14:59:11
TCPでサイズが8kbくらいのデータを送ろうとするとへにゃるんですが、
TCP送信できるデータには最大サイズみたいなのはありますか?
それとも、何か別の原因が考えられますか?
0998デフォルトの名無しさん2008/02/27(水) 15:06:56
へにゃるって何だよ
具体的に何が起こったのか書け
1回のrecvで受け切れなかったとか、そういうことか?
0999デフォルトの名無しさん2008/02/27(水) 15:11:08
どっちにしろ下の層で細かく分割されるんだ。
TCPやソケットはそういうのを考えなくていいように作られてるんだ。
1000デフォルトの名無しさん2008/02/27(水) 16:09:40
へにゃりつつウヘラウヘラすればいいさ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。