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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/03/23(火) 20:31:49
主にソケットに関しての質疑応答スレッドです。

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

前スレ
ネットワークプログラミング相談室 Port25
http://pc12.2ch.net/test/read.cgi/tech/1255459388/
関連スレ
ネットワークプログラミング雑談
http://pc12.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://pc12.2ch.net/test/read.cgi/tech/1086238859/
0655デフォルトの名無しさん2010/07/23(金) 14:30:34
>>654
sleepしたら通信が遅くなるでしょ
0656デフォルトの名無しさん2010/07/23(金) 14:42:25
> 連続してパケットがくるとCPU使用率が100%になる
連続してパケットが来たときに、自前処理やってるんだから100%になっても不思議じゃないよね。
その処理分を「CPU使用率」から除外したいってこと?

無理なんじゃね?
0657デフォルトの名無しさん2010/07/23(金) 14:46:59
>>653
>カーネルレベルでやろうがユーザーレベルでやろうが同じことをやろうとしたら
>リソースコストは同じだけども

違うことをやってるから、結果CPU使用率が異なるんだとは思わないんだろうか。
0658デフォルトの名無しさん2010/07/23(金) 14:55:03
専用のドライバ書くとかw
0659デフォルトの名無しさん2010/07/23(金) 14:59:37
え、これってネットワークが鬼畜に速いかPCが遅すぎるとかいう話?
それともリアルタイムで糞重いエンコーディングとか画像処理系のフィルタリングかけてるとか?

だったらもっと速いPC買おうぜ
要するに処理能力が足りてないんだよ
0660デフォルトの名無しさん2010/07/23(金) 15:11:24
>>659
UDPデータが連続して来るのにネットワーク速度はあんまり関係ないよね
ローカルLAN同士の通信で1000バイトやそこらのパケットの連続を
ループでまわすと処理の大小はあんまり関係ないと思うのだけど
0661デフォルトの名無しさん2010/07/23(金) 15:57:32
sleep っつーか yield 挟むだけでも遅くなるような処理なの?
そんな膨大なデータやりとりするなら、しゃーないんじゃないかなあ
0662デフォルトの名無しさん2010/07/23(金) 15:58:14
え?UDPの話なの?
0663デフォルトの名無しさん2010/07/23(金) 16:02:18
UDPでsocket使ったユーザレベルアプリがCPU使用率100%になるって話?
0664デフォルトの名無しさん2010/07/23(金) 17:06:42
UDP受信ね
0665デフォルトの名無しさん2010/07/23(金) 17:32:28
なんかこの話題振ってる人不愉快
0666デフォルトの名無しさん2010/07/23(金) 18:13:05
>>653
CPU使用率って誰が管理してんの?
0667デフォルトの名無しさん2010/07/23(金) 18:17:58
単に非blockモードでreceiveを連続的に発行しているから
CPU使用率が100%になっているだけだと推測。
selectあるいは(Win32の)イベントオブジェクトで
UDP受信を非同期処理で実現していれば、
(一般的には)CPU使用率が100%になることはありえない。
0668デフォルトの名無しさん2010/07/23(金) 18:25:57
>653
>>見た目が悪いのでCPU使用率に反映させない方法はないものだろうか

 今日の晩ご飯はカレーライスがいい、カレーライスじゃなきゃ絶対にイヤダ!!

と言っているガキの戯言にしか聞こえない。あるいは、

 中間試験の英語と数学で赤点をとってしまった。母親に知られるとやばいので、
 それを隠し通せる方法はないものだろうか?

でもいい。質問の内容がプログラミング相談室向けでは無い。
お子様向け人生相談室に合う話題だ。
0669デフォルトの名無しさん2010/07/23(金) 18:40:53
>>667
もちろんロックを実装して何も無い時にCPU負荷が上がらないようにしてるけど
データベースの1レコードを1つのパケットにして何十件かをまとめて送るんだけど
もちろん転送効率を落としたくないから可能な限り早く発送して再送をする
ローカル環境では50ミリ秒前後の遅延がロスが少ない感じだけど
この頻度でも受信側はループして処理すると100%になるよ
0670デフォルトの名無しさん2010/07/23(金) 18:53:17
>>669
プラットフォームはWindows(WinSock)でいいのかな?以下、Yesとして答えるよ。

>>もちろんロックを実装して何も無い時にCPU負荷が上がらないようにしてるけど
ロックというのはWin32 APIのクリチカルセクションのことかな?
これは資源の排他制御に使う操作だから、これをループに組み込めばCPUを無駄に消費するのは当然。
>>667で書いたように、selectあるいはイベントオブジェクトで実装する必要がある。
0671デフォルトの名無しさん2010/07/23(金) 19:19:58
>>667はそういう意味で言ってないよ
言語はC#でWaitHandleというものがある
恐らくWaitSingleObject APIをラップしたものだろうと思う
確かにコストは大きいけどCPU使用率に極端に影響するほどのコストではないと思うけどな
0672デフォルトの名無しさん2010/07/23(金) 19:21:52
どっちかというと受信したデータを加工する作業が負担になってるし
これは省略出来ない処理なんでどうしようもない
0673 ◆0uxK91AxII 2010/07/23(金) 21:30:57
>>650
kernelでCPUを喰っているなら、HWを買い換える。
userでなら、糞なprogramを書き換える。
0674デフォルトの名無しさん2010/07/27(火) 12:39:17
Windows のコマンドラインアプリで netsh ってあるけどこれってシスコCLIみたいだなーと思ったら、まんま移植したものっぽいね。
netsh ってWindowsでサーバー構築してる人が使うものなんですか?
0675デフォルトの名無しさん2010/07/27(火) 12:53:44
べっ、別にサーバー以外で使ってもいいんだからねっ
0676デフォルトの名無しさん2010/08/11(水) 02:17:22
Winsock2について質問です。

クライアント側で FD_CLOSE が呼ばれるのはどういうときでしょうか?
・サーバ側がclosesocketしたとき
・サーバ側がshutdownしたとき
・クライアント側がclosesocketしたとき
・クライアント側がshutdownしたとき
0677デフォルトの名無しさん2010/08/11(水) 11:08:45
>>676
上3つじゃね
0678デフォルトの名無しさん2010/08/11(水) 12:50:50
何故ドキュメントを読まないのだ。

http://msdn.microsoft.com/en-us/library/ms741540(VS.85).aspx
The FD_CLOSE message is posted when a close indication is received for
the virtual circuit corresponding to the socket. In TCP terms, this means
that the FD_CLOSE is posted when the connection goes into the TIME WAIT or
CLOSE WAIT states. This results from the remote end performing a shutdown
on the send side or a closesocket. FD_CLOSE should only be posted after all
data is read from a socket, but an application should check for remaining
data upon receipt of FD_CLOSE to avoid any possibility of losing data.
0679デフォルトの名無しさん2010/08/11(水) 16:01:56
誰か訳してください
0680デフォルトの名無しさん2010/08/11(水) 19:31:15
プログラミングは中学卒業してからにしましょう。
0681デフォルトの名無しさん2010/08/11(水) 22:52:07
>Winnyの場合,待ち受けポート番号は1024番以上からランダムに選ばれます。
何故、ランダムに待ち受けポートを変更しても通信が出きるんですか?
0682デフォルトの名無しさん2010/08/11(水) 22:56:33
>>680
英語力も高くなるよ、まじめにプログラミングすれば…
0683デフォルトの名無しさん2010/08/11(水) 23:54:35
>>681
相手が何番ポートか分かってるから。
0684デフォルトの名無しさん2010/08/12(木) 00:11:01
いやそのポートの話じゃねえし
0685デフォルトの名無しさん2010/08/12(木) 00:12:21
ランダムに待ち受けポートを変更しても「相手が何番ポートか分かってるから」。
0686デフォルトの名無しさん2010/08/12(木) 02:19:57
>>681
その選んだポート番号と自分のIPアドレスを自ノード情報として拡散するから。
0687デフォルトの名無しさん2010/08/12(木) 02:46:42
>>679
>>678を訳してみた。専門用語が理解できていれば、高卒レベルの英文法の知識で十分ではないかと思われる。

>The FD_CLOSE message is posted when a close indication is received for
>the virtual circuit corresponding to the socket.
  FD_CLOSEメッセージは、ソケットに対応する仮想回路からclose通知を受信した時に通知される。
>In TCP terms, this means that the FD_CLOSE is posted when the connection
>goes into the TIME WAIT or CLOSE WAIT states.
  TCPの用語で言い換えれば、これは接続がTIME WAIT状態またはCLOSE WAIT状態へ遷移する時に
  FD_CLOSEが通知されることを意味する。
>This results from the remote end performing a shutdown on the send side or a closesocket.
  これは送信側のリモートエンドによるshutdownの実行、あるいはclosesocketに起因する。
>FD_CLOSE should only be posted after all data is read from a socket, but an application
>should check for remaining data upon receipt of FD_CLOSE to avoid any possibility of losing data.
  FD_CLOSEはすべてのデータがソケットから読まれた後にのみ通知されるはずであるが、
  データを失う可能性を避けるため、アプリケーションはFD_CLOSEを受取り次第、
  残りのデータが存在するかを確認すべきである。
0688デフォルトの名無しさん2010/08/12(木) 03:27:08
自演乙
0689デフォルトの名無しさん2010/08/13(金) 17:44:10
>これは送信側のリモートエンドによるshutdownの実行、あるいはclosesocketに起因する。
つまりどういうことですか?
0690デフォルトの名無しさん2010/08/13(金) 21:35:43
>>689
リモート側アプリケーションが恣意的に回線を閉じたということ。

それともshutdownとclosesocketの意味が分からないのかな?
0691デフォルトの名無しさん2010/08/13(金) 23:57:53
× 送信側のリモートエンドによるshutdownの実行
○ リモートエンドによる送信面のshutdownの実行
0692デフォルトの名無しさん2010/08/14(土) 00:10:47
つまり、相手側がshutdown(sock,SD_SEND); 、またはclosesocketを実行した場合ってこと?
相手側がshutdown(sock,SD_RECEIVE); を呼んだ場合や、自身がclosesocketを呼び出した場合はFD_CLOSEは発生しないって事ですか?
0693デフォルトの名無しさん2010/08/14(土) 00:25:31
TIME_WAITに遷移するのは自分がcloseした時。従って自分がclosesocketした時も
FD_CLOSEが飛んでくるはず。
0694デフォルトの名無しさん2010/08/14(土) 22:44:40
test
0695デフォルトの名無しさん2010/08/21(土) 10:20:38
http://ymir.la/loda/src/ymir_10144.zip.html
たとえば上のサイトでは ダウンロードキーに moemoe と入力すると
ダウンロードできるようになりますが、
これをプログラムで行うにはどのように行うのでしょうか?
0696デフォルトの名無しさん2010/08/21(土) 11:15:56
>>695
先生、病院はこっちです
ttp://www.pri.kyoto-u.ac.jp/index-j.html
0697デフォルトの名無しさん2010/08/21(土) 12:58:53
夏だな
06986952010/08/22(日) 10:19:19
めんどくさいんです><
お願いしますm(_ _)m
0699デフォルトの名無しさん2010/08/22(日) 18:55:19
お前みたいなバカの相手するのが、皆めんどくさいんです><
0700デフォルトの名無しさん2010/08/22(日) 19:09:47
>>695
そのページだと>>695レベルじゃ作れないかもな〜
cookie関係のプログラミング面倒くさいもん

LLで作るんだろうけど、www::mechanizeでも調べればいいと思うよ
07016952010/08/23(月) 19:55:55
説明できないほどのどアホなんですね><
すいませんでしたm(_ _)m
0702デフォルトの名無しさん2010/08/23(月) 20:09:12
>>700
LLって何の略?
0703デフォルトの名無しさん2010/08/23(月) 20:12:02
あーなるほど、Lightweight Languageの略なのか
bashとかwshとかああいうののことか。知らなかったわ
07046952010/08/23(月) 22:16:22
アホなのでレスの内容が理解で来ませんでした><
すいませんでしたm(_ _)m
07056952010/08/24(火) 17:42:33
おまえらのようなクソゴミ役立たずに質問するよりも
買ったほうが作者にもいいし、経済にもいい
つまりおまえらはアマチュア同人作家以下のとんでもなくくっさいゴミむしのキチガイがはいたゲロを
食べて生きている下等生物以下のミジンコの卵
さっさとクソしてしね
0706デフォルトの名無しさん2010/08/24(火) 21:42:01
プログラミングに必要な能力は技術じゃなくて根気
面倒臭がってたら何も産み出せない
0707デフォルトの名無しさん2010/08/24(火) 22:27:43
それだけじゃない。
0708デフォルトの名無しさん2010/08/24(火) 22:29:29
意外と適性も必要らしい。
0709695 2010/08/24(火) 22:52:51
>>705
これは、俺になりすました人です
迷惑かけてごめんなさい
0710デフォルトの名無しさん2010/08/24(火) 23:29:33
>>706
下手な根気は誤った方向へ延々とハマるという場合もある。
適度に「これめんどくせ〜、もっといい方法無いかな?」というのも必要。
0711デフォルトの名無しさん2010/08/24(火) 23:35:25
>>710
いい方法ばかり探しすぎて何をすればいいのかわからなくなって何もできないのがお前
0712デフォルトの名無しさん2010/08/25(水) 02:16:33
>>711
自己紹介乙としか
0713デフォルトの名無しさん2010/08/25(水) 09:32:45
>>711
「めんどうくさがり」ってのはプログラマーに必ず必要な資質
0714デフォルトの名無しさん2010/08/25(水) 09:38:19
いい方法を探すのすらめんどくさいやつはどうするの?
0715デフォルトの名無しさん2010/08/25(水) 09:54:02
>>714
それは「めんどうくさがり」ではなく、ただの「なまけもの」だ。
一見そっくりだが大きな違いがあるので注意しよう。
0716デフォルトの名無しさん2010/08/25(水) 10:11:24
へりくつだな
0717デフォルトの名無しさん2010/08/25(水) 10:14:05
屁理屈も理屈のうちだよ
0718デフォルトの名無しさん2010/08/25(水) 10:16:23
それもまたへりくつだな
0719デフォルトの名無しさん2010/08/25(水) 10:20:42
その屁理屈も理屈のうちだよ
0720デフォルトの名無しさん2010/08/25(水) 10:22:49
それもまたまたへりくつだな
0721デフォルトの名無しさん2010/08/25(水) 10:27:58
ただ、めんどくさがるだけじゃ何もならない。 めんどくさがる為に手を動かすという資質が必要。 
めんどくさがらずにめんどくさがる。 
0722デフォルトの名無しさん2010/08/25(水) 10:31:29
それはめんどくさがりとは別の資質だ
改善したがりという資質だ
0723デフォルトの名無しさん2010/08/25(水) 10:47:11
めんどくさがりは向いていない
0724デフォルトの名無しさん2010/08/25(水) 10:53:50
そのとおり
0725デフォルトの名無しさん2010/08/25(水) 12:05:04
>>715
じゃあ、めんどくさいから他人に仕事を押し付ける人はめんどくさがり?
0726デフォルトの名無しさん2010/08/25(水) 12:11:19
PacketShader
GPUを利用したPCベースのソフトウェアルータで40Gbpsを達成

http://shader.kaist.edu/packetshader/

これからはネットワークプログラミングもGPGPUの時代ですよ!
0727デフォルトの名無しさん2010/08/25(水) 12:13:24
しかしGPGPUってハックだよなぁ。
元々GPU自体は画像処理のための物だし、
CPUが超並列化してくれる方が正統だと思うんだけどなぁ。
0728デフォルトの名無しさん2010/08/25(水) 13:51:36
頭が固いと苦労するぞ
0729デフォルトの名無しさん2010/08/25(水) 16:05:03
頭が堅い俺はCometが流行った時も批判しまくってた。
今ではHTML5で遊んでる。
0730デフォルトの名無しさん2010/08/26(木) 13:09:27
下記と同じようなことをCLRアプリで実現させたいです
HttpWebRequestでやって見ましたがCookie関連の動作がうまくいきませんでした

例えばYahooにアクセスすると下のコードでは
こんにちは、○○○さん
となるのに対しHttpWebRequestだと
ログイン
になってしまいます

誰かお願いしますm(_ _)m

AfxParseURL(CString(uri), protocol, serverName, fileName, port);
CInternetSession session(L"HttpPost - simple http client");
CHttpConnection* conn = session.GetHttpConnection(serverName, port);
CHttpFile* file = conn->OpenRequest(
CHttpConnection::HTTP_VERB_GET, fileName,
NULL, 1, NULL, NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE);
file->AddRequestHeaders("〜");
file->SendRequest();
0731デフォルトの名無しさん2010/08/27(金) 01:45:23
酷い翻訳だな。機械翻訳かと思ったわ
ttp://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=JA-JP&k=k%28SYSTEM.NET.SOCKETS.SOCKET.SHUTDOWN%29;k%28SHUTDOWN%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-CSHARP%29&rd=true
0732デフォルトの名無しさん2010/08/27(金) 02:04:42
MSDNは基本的に機械翻訳だが?
0733デフォルトの名無しさん2010/09/04(土) 03:43:11
クライアント側のプログラム作ってテストしたいがサーバ側となる機器が手元に来ない
でも、自分でサーバー側応答プログラムを書くのは面倒くさい。
こんなときに使えるらくちんツールって無い?
0734デフォルトの名無しさん2010/09/04(土) 07:10:02
VM
0735デフォルトの名無しさん2010/09/04(土) 10:13:26
めんどくてもサーバー側は作る
0736デフォルトの名無しさん2010/09/04(土) 10:54:20
>>733
inetdやxinetdを使う
0737デフォルトの名無しさん2010/09/10(金) 19:34:01
テスト用の返答返すだけならクライアント書くのと大してかわらんだろう?
0738デフォルトの名無しさん2010/09/10(金) 21:10:36
結構違う場合もある
0739デフォルトの名無しさん2010/09/11(土) 00:50:06
djbのツールにいいのが有ったような
0740デフォルトの名無しさん2010/09/14(火) 11:31:53
>>733
プロトコルがテキストならnetcatとか。
0741デフォルトの名無しさん2010/09/14(火) 22:08:38
dhtの実装って難しいのか
0742デフォルトの名無しさん2010/09/18(土) 00:31:53
広く、といっても資格の勉強などはおすすめしません。資格というのはあくまで仕事に直結したものを取るべきです。
採用時に資格は一切評価しないといった建前も世間ではよく耳にしますが、折角の機会ですから本当の事を言います。評価します。マイナスの評価です。
仕事に就いていないのに資格の取得などに時間を浪費していたという事実は、少なくとも一分一秒を争う企業活動への参加を目指すなら、悪です。
学生時代のいまから時間の使い方をしっかり意識して生活してください。
社会に出れば仕事を覚えるために学生時代の10倍も20倍もハードな勉強が求められます。
もちろん必要な資格があればその中で取得します。しかしその学習量は社会人が仕事の中で日々習得する知識量のうちのほんのごく一部に過ぎません。
学生が資格の勉強に貴重な時間を費やすのは、子供が折角もらったお年玉を老後の生活資金に貯めておくようなものです。
子供のお小遣いと大人の生活費では一円の重みが違います。同様に、学生と経験を積んだ社会人とでは同じ一時間でも脳の仕事量が全く違うのです。
0743デフォルトの名無しさん2010/09/18(土) 01:36:56
どこの誤爆
0744デフォルトの名無しさん2010/09/18(土) 04:37:53
まだ人間じゃない
0745デフォルトの名無しさん2010/09/18(土) 10:07:03
>>742
お前ニートだろ?w
0746デフォルトの名無しさん2010/09/18(土) 10:41:32
天才プログラマいる?
0747デフォルトの名無しさん2010/09/18(土) 10:50:39
>>746
俺天才プログラマだけどなに?
0748デフォルトの名無しさん2010/09/18(土) 11:00:55
俺超天才プログラマだけどなに?
0749デフォルトの名無しさん2010/09/18(土) 11:06:26
天才を超えたら天才じゃないじゃん。
0750デフォルトの名無しさん2010/09/18(土) 11:08:49
おれ人災プログラマだけどなに?
0751デフォルトの名無しさん2010/09/18(土) 11:11:07
>>750
あんま迷惑かけるなよ
0752デフォルトの名無しさん2010/09/18(土) 11:12:09
MessagePackをネトゲプロトコルに使おうと思うんだけどどう思う?
0753デフォルトの名無しさん2010/09/18(土) 13:42:42
>>752
テーブルゲーム系ならいいんじゃね?
0754デフォルトの名無しさん2010/09/29(水) 22:47:12
ipsendwinというツールを使ってパケットを飛ばしてテストをしていたのですが、
ツールを終了してもパケットの送信が止まらずに困っています。
パソコンを再起動しても止まりません。
どなたか解決方法を知りませんか?
■ このスレッドは過去ログ倉庫に格納されています