ネットワークプログラミング相談室 Port25
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/10/14(水) 03:43:08Programming 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辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port24
http://pc12.2ch.net/test/read.cgi/tech/1246895188/
関連スレ
ネットワークプログラミング雑談
http://pc12.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://pc12.2ch.net/test/read.cgi/tech/1086238859/
0446デフォルトの名無しさん
2009/12/27(日) 17:08:560447デフォルトの名無しさん
2009/12/27(日) 17:17:37それを調べる事から調査が始まるのではないかと。
0448デフォルトの名無しさん
2009/12/27(日) 18:23:22デバッグ用にコードを仕込んで確認しました。
acceptから受けたsock(メインスレッド) と WSAEventSelectに渡されるsock(別スレッド)は同じでした。
>>447
WSAENOTSOCK
10038
Socket operation on nonsocket.
An operation was attempted on something that is not a socket.
Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.
です。
有効なソケットではないという感じです。
0449445
2009/12/27(日) 23:10:32この部分を1コに変更する(つまり、ひとつの接続が完了するまで次のaccept()には戻らない)と上記のようなエラーは発生しなくなります。
0450デフォルトの名無しさん
2009/12/28(月) 13:18:33スレッドで読んでる最中に上書きしちゃてるとか
0451デフォルトの名無しさん
2009/12/28(月) 14:54:36FD_ISSETは使うわなくていいんだよな?
0452デフォルトの名無しさん
2009/12/28(月) 15:17:55エラー要因はちゃんと見とけよ
割り込みだったら待ちなおしだ
0453445
2009/12/28(月) 18:06:48SOCKET型変数を値渡ししています。
どこかで上書きしちゃっている可能性も考えたので>>448で実験していましたが
エラー発生時のメインスレッドのsock(SOCKET型) と値渡ししたsock(SOCKET型) は同じ数値でした。
また>>445の1〜4のうち、1と2の間でも、acceptの戻り値がINVALID_SOCKETであるかどうかの確認を行っています。
このときにはINVALID_SOCKETではないのに、別スレッドに渡した後のWSAEventSelect()やWSAEnumNetworkEvents()でSOCKET_ERRORになります。
SOCKET_ERRORの時はif(WSAGetLastError()==WSAEWOULDBLOCK)...の処理を入れてあります。
0454デフォルトの名無しさん
2009/12/28(月) 18:39:560455デフォルトの名無しさん
2009/12/28(月) 18:41:34見直してみてはどうかな
第一引数のソケットは正しくても WSAENOTSOCKが返ることも
あるみたいだし
http://groups.google.co.jp/group/microsoft.public.win32.programmer.networks/browse_thread/thread/f7cf0ce6e7e2aefa
0456デフォルトの名無しさん
2009/12/28(月) 22:47:310457445
2009/12/29(火) 00:06:22ありがとうございます。
リンク先のURLはWSAEventSelect(...)の2番目の引数はWSAEVENT*ではなく、WSAEVENTだよってことですよね?
(ソースはWSAEVENT**を渡そうとしているようですが)
>第一引数のソケットは正しくても WSAENOTSOCKが返ることもあるみたいだし
SOCKET_ERRORを返した場合でも、一定時間待機後リトライするようにしたところ、成功することがあるということが分かりました。
それでもまだ失敗する場合もあるようですが、かなり改善しました。
いろいろ試してみます。
>>456
それはないと思うのですが。
スレッド間で異なる値のソケットを持っていますし、アドレスで渡してはいないので別スレッドのソケットを参照してしまうこともないです。
スレッド間の排他制御以前の問題だと思います。
0458デフォルトの名無しさん
2009/12/29(火) 08:27:42> スレッド間の排他制御以前の問題だと思います。
自分のコードが間違っていると言う考えには至らず、システムに原因があると考える、
典型的な初心者。
100%に近い確率でお前のコードのどこかが、SOCKETを無効にしているか無効なソケット
を渡されたのをチェックせず見逃している。
0459デフォルトの名無しさん
2009/12/29(火) 10:29:25>エラー発生時のメインスレッドのsock(SOCKET型) と値渡ししたsock(SOCKET型) は同じ数値でした。
それは、acceptの戻り値と一致するのかな、っと。
0461445
2009/12/29(火) 18:33:55>自分のコードが間違っていると言う考えには至らず、システムに原因があると考える、
違いますね。
排他制御以前に自分の「winsock2の取り扱い方」に問題があると思っています。
>>460
>メインスレッドのsock(SOCKET型)
これがacceptの戻り値です。
0462デフォルトの名無しさん
2009/12/29(火) 19:09:11ぐだぐだ言ってねぇでいいからSOCKETを渡してるとこと受け取ってるとこをmutexでくくれ。
話はそれからだ
0463デフォルトの名無しさん
2009/12/29(火) 19:29:44socket, acceptでSOCKET作る。使う。閉じる。これだけなのに使いこなせないとは
よほどのヘボということになるが。
0464デフォルトの名無しさん
2009/12/29(火) 19:34:22趣味ならしょうがないというか、よくある話でしょう。
0465デフォルトの名無しさん
2009/12/29(火) 22:03:570466デフォルトの名無しさん
2009/12/29(火) 22:26:020467デフォルトの名無しさん
2009/12/29(火) 22:44:110468デフォルトの名無しさん
2009/12/29(火) 22:47:400469デフォルトの名無しさん
2009/12/30(水) 02:50:220470デフォルトの名無しさん
2009/12/30(水) 11:49:290471デフォルトの名無しさん
2009/12/30(水) 12:04:370472デフォルトの名無しさん
2009/12/30(水) 15:49:10最低のゴミクズのチンカス野郎のあつまりですよ(^-^)
0473デフォルトの名無しさん
2009/12/30(水) 15:52:370474デフォルトの名無しさん
2009/12/30(水) 16:01:04あなたのことですよ(^-^)
0475デフォルトの名無しさん
2009/12/30(水) 19:30:21> SOCKET_ERRORの時はif(WSAGetLastError()==WSAEWOULDBLOCK)...の処理を入れてあります。
こういうWSAGetLastErrorの使い方されれると、
ドキュメントに書いてあること守っているかどうか気になるなあ。
0476デフォルトの名無しさん
2009/12/31(木) 06:13:07ぱくられる、たたかれる、異常なほどの知識をもったキチガイがくる
のいずれかに該当するので結局オープンにしない
そして、車輪の再開発はまた繰り返される
これが日本のクオリティ
0477445
2010/01/03(日) 00:45:04別の接続で(>>445とは関係のない部分)のミスだった。
別の接続がソケットを使用し、ある条件によって即座にclosesocket()する場合としない場合があるのだけど
closesocket()した場合でも、その後オブジェクトの破棄時にまたclosesocket()を呼び出していることが原因だった。
最初のclosesocket()によって開放したソケット(と同じ値)を>>445のサーバが再利用するようになったときに
オブジェクトの破棄時にまたclosesocket()を呼び出したせいでサーバが取得したソケットを無効にしてしまっていたようでした。
0478デフォルトの名無しさん
2010/01/04(月) 13:22:25http proxyを作りたいのですが、Keep-Aliveのセッションに流れているリクエスト間の及び
レスポンス間を検出をする効率的な方法を教えてください
Content-Lengthヘッダは必須ではないようですし
1Byteづつシフトさせてある程度の量を読んでリクエストライン/ステータスラインを
検知するような方法だとbody内等に類似の文字列が含まれた場合に
意図しない動作をする可能性が考えられます
(検知に必要なリソースが増える上に遅くなるので避けたいと言うのもあります)
・・・どうしても不確定要素が排除できない・・・(´・ω・`)
よろしくお願いします
0479デフォルトの名無しさん
2010/01/04(月) 14:00:22> In order to remain persistent, all messages on the connection MUST
> have a self-defined message length (i.e., one not defined by closure
> of the connection), as described in section 4.4.
0480デフォルトの名無しさん
2010/01/04(月) 23:56:380481デフォルトの名無しさん
2010/01/05(火) 07:08:060483デフォルトの名無しさん
2010/01/05(火) 22:41:25一般的にはposixの方が速いけど、>>481のレスのとおりだと思います。
0484デフォルトの名無しさん
2010/01/05(火) 22:50:300485デフォルトの名無しさん
2010/01/05(火) 23:13:09SystemVが遅いからいろんな方法が生まれたということを考えるとねぇ
0486デフォルトの名無しさん
2010/01/06(水) 00:04:41あんたの妄想なんていらないんだよ
0487デフォルトの名無しさん
2010/01/06(水) 00:09:190488デフォルトの名無しさん
2010/01/06(水) 00:11:170489デフォルトの名無しさん
2010/01/06(水) 00:14:060490デフォルトの名無しさん
2010/01/06(水) 00:15:010491デフォルトの名無しさん
2010/01/06(水) 00:21:32知ったかの馬鹿ばっかだったってことだ
今日も俺の勝ち
0492デフォルトの名無しさん
2010/01/06(水) 01:07:220493デフォルトの名無しさん
2010/01/06(水) 16:47:150494デフォルトの名無しさん
2010/01/06(水) 16:48:38キモチワルイ ヒマジン キチガイ モノゴイ
0495デフォルトの名無しさん
2010/01/06(水) 17:13:42真面目なスレに出てきてほしくないよね、何が楽しいんだろうか
0496デフォルトの名無しさん
2010/01/06(水) 17:36:59>>495
お前も何が楽しくてレスしてんだよ。
0497デフォルトの名無しさん
2010/01/06(水) 17:50:240498デフォルトの名無しさん
2010/01/06(水) 19:01:45深夜時刻の書き込みを規制すればいいような
0499デフォルトの名無しさん
2010/01/06(水) 19:13:500500デフォルトの名無しさん
2010/01/06(水) 19:18:15邪魔でしょうがない。
0501デフォルトの名無しさん
2010/01/06(水) 20:18:270502デフォルトの名無しさん
2010/01/06(水) 20:45:330503デフォルトの名無しさん
2010/01/07(木) 00:56:320504デフォルトの名無しさん
2010/01/07(木) 01:01:370505デフォルトの名無しさん
2010/01/07(木) 21:50:38UNIXネットワークプログラミングのVol.2の内容だな
このスレとは関係ないけどな
0506デフォルトの名無しさん
2010/01/08(金) 22:19:30なんかお勧めはありますか?
0507デフォルトの名無しさん
2010/01/08(金) 22:26:190508デフォルトの名無しさん
2010/01/09(土) 22:05:500509デフォルトの名無しさん
2010/01/10(日) 12:54:45また参考になるサイトは有りますか?
0510デフォルトの名無しさん
2010/01/15(金) 18:52:311回ごとにどのぐらい、間を開けるべきですか?
曖昧な質問ですが教えてください。
自分としては10日ぐらいにわけて要求しようと思っているのですが
それが多いのか少ないのかわかりません。
0511デフォルトの名無しさん
2010/01/15(金) 18:53:540512デフォルトの名無しさん
2010/01/15(金) 23:27:13あまり頻繁に同一アクセスすると、DOSアタックと間違えられて、塞がれるからかもしれないぞ。
0513デフォルトの名無しさん
2010/01/16(土) 10:07:48難しいですね。
アクセスする度にIP変えるとしてもホストでわかるでしょうし。
とりあえずまだ時間はあるので自分で考えてから決めようと思います。
0514デフォルトの名無しさん
2010/01/16(土) 14:02:32何を言ってるんだ、おまいらは?
それはネットワークプログラミングの問題ではなくて、サイトの運営ポリシーの問題だ
512 が正論だと思うが… … …
0515デフォルトの名無しさん
2010/01/16(土) 14:48:490516デフォルトの名無しさん
2010/01/16(土) 16:13:260517デフォルトの名無しさん
2010/01/16(土) 18:47:05100万PVのサイトなら誤差?
開発日記でもブログに書いて10000回アクセスしてログ見てみたらw
0518デフォルトの名無しさん
2010/01/16(土) 21:32:091日当たりのアクセス数調べてみたら5000万はありそうです。
とっても嫌な気持ちになると思われます。。
0519デフォルトの名無しさん
2010/01/16(土) 22:17:370520デフォルトの名無しさん
2010/01/16(土) 22:53:510521デフォルトの名無しさん
2010/01/19(火) 02:51:200522デフォルトの名無しさん
2010/01/19(火) 11:03:010523デフォルトの名無しさん
2010/01/19(火) 11:30:290524デフォルトの名無しさん
2010/01/24(日) 01:45:41PC1台しかないんで、もう一つ対抗装置をエミュするアプリ作って
同じPC上で通信ってできますか?
ソケットならループバックできるけど、シリアルポートはさすがに無理?
物理的につながった相手としか交信できませんか?
0525デフォルトの名無しさん
2010/01/24(日) 01:55:130526デフォルトの名無しさん
2010/01/24(日) 01:58:41なるほど!その手があったか。
ありがとうございます!
0527デフォルトの名無しさん
2010/01/24(日) 02:05:150528デフォルトの名無しさん
2010/01/24(日) 02:07:190529デフォルトの名無しさん
2010/01/24(日) 02:29:03あげようか?
0530デフォルトの名無しさん
2010/01/24(日) 03:46:52仮想ポート同士を繋げるなんて出来たっけ?
0531デフォルトの名無しさん
2010/01/24(日) 05:44:16シリアルなんて付いてるpc探すほうが苦労するし、もうusbでよくね?
http://pc12.2ch.net/test/read.cgi/tech/1162901243/
USBプログラミング入門
http://pc12.2ch.net/test/read.cgi/tech/1162801793/
RS-232cについての質問(初心者)
0532デフォルトの名無しさん
2010/01/24(日) 09:56:160533デフォルトの名無しさん
2010/01/24(日) 13:42:300534デフォルトの名無しさん
2010/01/24(日) 14:39:460535デフォルトの名無しさん
2010/01/24(日) 15:01:48データの読み書き程度なら、VMwareの場合シリアルポートを名前付きパイプに
マップしたり出来るらしいし、なんとかなるかも
0536デフォルトの名無しさん
2010/01/24(日) 17:15:360x1bのESCだけが送られてきた時と、
エスケープシーケンス(0x1b[Aとか)の区別は
続く文字がこない場合、タイムアウトでやるしかないでしょうか。
0537デフォルトの名無しさん
2010/01/24(日) 17:29:58行単位でしか送られてこないケースが多いけど
0538デフォルトの名無しさん
2010/01/24(日) 17:32:260539デフォルトの名無しさん
2010/01/24(日) 17:34:330540デフォルトの名無しさん
2010/01/24(日) 17:38:18タイムアウトしてはいけない
0541デフォルトの名無しさん
2010/01/24(日) 17:54:460542デフォルトの名無しさん
2010/01/24(日) 17:59:24ハングアップする糞メールソフトがあったな
NeXTのMail.appだったかな
0543デフォルトの名無しさん
2010/01/24(日) 20:28:00内容によって返答を返してくれるレスポンスプログラムも用意してデバッグしたいってこと?
素直にお古のPCを持ってきた方がいいんじゃない?
0544デフォルトの名無しさん
2010/01/24(日) 21:26:020545デフォルトの名無しさん
2010/01/24(日) 22:01:47■ このスレッドは過去ログ倉庫に格納されています