- 1 名前:ftp-data mailto:sage [2007/08/07(火) 01:47:35 ]
- 主にソケットに関しての質疑応答スレッドです。
Programming UNIX Socket FAQ (日本語訳) www.kt.rim.or.jp/~ksk/sock-faq/indexj.html Winsock Programmer's FAQ (日本語訳) www.kt.rim.or.jp/~ksk/wskfaq-ja/ 関連リンクは>>2-10辺り 足りなかったら適当に付け足してね 前スレ ネットワークプログラミング相談室 Port19 pc10.2ch.net/test/read.cgi/tech/1159692799/ 関連スレ Java ネットワークプログラミング 【教えて!】 pc11.2ch.net/test/read.cgi/tech/1086238859/
- 449 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:18:05 ]
- 自力で調べろや坊主
って事ですか?
- 450 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:35:54 ]
- windumpでパケット調べろ。
- 451 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 19:10:35 ]
- GetTCPTableとかで取得したTCPコネクションを切断するにはどうすればいいんですかね?
- 452 名前:デフォルトの名無しさん [2007/11/15(木) 21:09:01 ]
- HTTP1.1での通信方法がのっているサイトありましたら教えて頂けませんか?
- 453 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:42:30 ]
- Host情報を送ってHTTP1.1で通信するのは何も難しいことじゃないが今は1.0でええじゃないか
きっとおまえさんにゃまだ早いんだよ
- 454 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 03:06:54 ]
- RFCも読まずにHTTPをしゃべろうという人を困らせるために、
サーバはPOSTに対してできるだけ 100 Continue を返すべき。 何かと思ってちゃんと調べるだろうから。
- 455 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 03:20:59 ]
- >>452
ttp://ftp.rfc-editor.org/in-notes/rfc2616.txt 分かりやすい日本語サイトなら ttp://www.studyinghttp.net/rfc_ja/ とか・・・
- 456 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 03:25:26 ]
- >>454
いや、いっそのことRFCそのものを返したらどうだろう?
- 457 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 03:52:54 ]
- でもHTTPとかContent Length義務にしてくれたほうがいいよなー
もし最初の200バイトだけ送信して何もレスポンスがないまま5分たってから 残りを送信する仕様の(糞)サーバがあったとして、 Content Lengthが義務だったら待ちつづけるし。。。 あといきなりデータ送信終了してもcloseかけてくれない(糞)サーバがあったとしたら、 データがいつ終わったのか分からないし。。。
- 458 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 04:34:14 ]
- >>457
それどちらも Content length の有無と関係ないですよ。
- 459 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 04:47:06 ]
- いや例えば後者の場合、サーバがデータ送信終了してもクライアントでrecvの戻り値が0になるなり
なんなりしなきゃ終わったかどうか分からなくないですか? Content-lengthあればrecvの戻り値が0であろうがなかろうがそこで自信を持って切れますし。。
- 460 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 04:59:36 ]
- >>459
えーとつまり「RFC違反だけど content length だけは正常に返す」という サーバを救済できるから、content length を RFC で義務化すべき、 ということですか? レスポンス開始時にはサイズが分からないので Connection: Close で返す、 というまともなサーバを実装不可能にしてまでやる意味があることとは、 あんまり思えないです。
- 461 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 05:06:06 ]
- そうだなレスポンス開始時にサイズが分からないこともあるか。
スマンカッタ でもRTSPとかはContent Length義務だよね。 そうしないとデータ境界わけわかんなくなるし。 こっちのほうがクライアント側がやりやすかったんで 言ってみただけだわ。
- 462 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 05:14:00 ]
- なんのためのチャンクだ
- 463 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 06:09:06 ]
- >>461
アホですね。
- 464 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:02:36 ]
- >>462
チャンクってRTSPにもHTTPにもないだろ?
- 465 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:20:06 ]
- TCP/IPソケット通信で質問します。
一度connectしたら常時接続のままという使い方をしてるんですが、 通常サーバ − クライアントどちらかでソケットcloseすると切断を検出出来ると思うんですが、 相手がcloseしないでリブートなどを行うと切断検出できません(無効となったソケットを維持) プログラムから一定間隔でping通信する 1通信毎にセッションを閉じる(頻繁に通信が発生するのであまりやりたくない) 空の電文を常時やり取りして生存を確認する もっとほかに断検出する良い方法があったら教えて下さい
- 466 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:41:39 ]
- >>465
TCPはそういうもの。 途中のルータが落っこちても一緒。 TCPとしては検出する仕組みをもっていない。 アプリで検出したくなければ、KeepAliveするぐらいかな。
- 467 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:59:25 ]
- >>464
>チャンクってRTSPにもHTTPにもないだろ? はぁ?
- 468 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:03:34 ]
- >>465
> 空の電文を常時やり取りして生存を確認する TCPはデータストリームなので、空のパケットは送れません。 1. データストリームの中のデータを型付けして、 通常データ以外に、alive check用パケットも送れるようにする。 2. keepalive socket optionを使う。(詳しくはFAQを>>1) 1.はICMP pingと違って、hostの死活でなく、 peerの死活を調べられるという利点があります。 >>466 「TCPが」というか分散環境ってそういうものだしね。 単純に落ちるfailure以外に、Content-Length: が違うなど、 mal-functional failureだって起りうる。
- 469 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:05:11 ]
- >>464
ハイパーテキスト転送プロトコル -- HTTP/1.1 3.6.1 チャンク形式転送コーディング www.studyinghttp.net/cgi-bin/rfc.cgi?2616#Sec3.6.1
- 470 名前:467 mailto:sage [2007/11/16(金) 13:08:15 ]
- まあchunkedなんてあんま使われてないけどな
自分で使うことはほぼ皆無だし
- 471 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:38:03 ]
- はぁ?
- 472 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 14:03:31 ]
- ム板で騙りとかどんだけ暇なんだよ
- 473 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 15:26:33 ]
- >>466
>>468 ありがとうございます。 2.のkeepalive socket optionを試してみます
- 474 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 15:31:29 ]
- keepaliveって検出までに2時間ぐらいかかるんじゃなかったっけ
- 475 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 16:17:42 ]
- 設定できる。
Windowsはタスクごとに設定できる。
- 476 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 19:07:36 ]
- ほんとだチャンクあったんだ。
でもほとんど使われてないよねこれ。
- 477 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 19:20:15 ]
- え?apacheなCGIに1.1で喋りかけてみたら、Chunkedな応答を
戻されて焦ってRFC2616読んだ、みたいな経験はないの? delegateに1.1で中継してもらったら、ChunkedとContent-Lengthが同時に 戻ってきて、MLとかみるとどうみても意図的なRFC違反ですありがとうございました、 みたいな経験はないの?
- 478 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 19:22:04 ]
- >>476
脳内乙 君はプログラマに向いてません。
- 479 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 19:34:56 ]
- >>478
あっそwwww じゃあ実際にコアな部分で使われてるオープンソースのプロジェクトを10個くらい挙げてみてよ。 RFCに準拠させるために実装が必須なサーバは除くよ。
- 480 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:05:31 ]
- Google code searchも知らないし、
Google APIも使ったことないし、 本当にプログラマじゃないんだろ。 荒れるから放置しる
- 481 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:05:33 ]
- 例えば2chの.datを全取得する時、大きなものは当然のようにchunkedで返ってくるんだけど
- 482 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:10:19 ]
- もう一つ
HTTP/1.1またはKeep-Aliveで、複数の、 CGIやSSI等のContent-Length不明な物を連続してGETすると mod_deflateによる圧縮が無ければ、当然chunkedで返ってくるね。 >481のは逆に、圧縮時に圧縮後のサイズが64Kを超えた場合のみだけど。
- 483 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:17:29 ]
- ごめん嘘だ。
HTTP/1.0だったら、Keep-Aliveでも chunked使われるわけ無いな。強制切断だね。
- 484 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 20:18:10 ]
- 最近のHTTPライブラリでchunkedサポートしてないのは皆無といっていいし、
HTTP系のRPCは全部chunkedサポート前提だろ。>>480にあるGoogle APIとか。
- 485 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:02:26 ]
- chunkedって実装がめんどうなんだよなあ。。。
俺はCGIは全出力結果を取得してからcontent-length付きで投げる派
- 486 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:19:16 ]
- 余程レスポンスがでかくなければそれでもいいんじゃね
- 487 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 00:48:53 ]
- >>485
CGIの場合は特に何も考えずにただ出力すれば HTTPサーバが勝手にchunkedにしてくれるぞ
- 488 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:19:32 ]
- >>487
受け取る側の実装が、さ>めんどくさい ところで一般的なデータの送受信を行う際に、 効率の良いやり方はどんな感じなんだろう? TAP <--> NIC <------------> NIC <--> TAP のようなtap間のやりとりをするプログラムを作っているんだが、 max = MAX(NIC,TAP); while(1){ FD_ZERO(&read); FD_ZERO(&write); if ( 出力バッファ > 0 ) FD_SET(NIC, &write); if ( 入力バッファ > 0 ) FD_SET(TAP, &write); FD_SET(NIC, &read); FD_SET(TAP, &read); select(max+1, &read, &write); if ( FD_ISSET(NIC,&read) ) NICから入力バッファへ if ( FD_ISSET(TAP,&read) ) TAPから出力バッファへ if ( FD_ISSET(NIC,&write) ) 出力バッファをNICへ if ( FD_ISSET(TAP,&write) ) 入力バッファをTAPへ } 単純に考えたらこれなんだけど、他に何か工夫あるかな?
- 489 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:35:27 ]
- >>受け取る側の実装が、さ>めんどくさい
そのレベルならWinInetでも使ってろ Winならだが
- 490 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:13:18 ]
- >>488
釣りですかね…
- 491 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 09:47:19 ]
- 無知なだけだろ。放置しる
- 492 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 11:27:48 ]
- 俺には>>488のどこが釣りなのかわからん・・・
誰か解説plz
- 493 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:28:52 ]
- >>492
釣りではないよ
- 494 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 14:51:36 ]
- selectの引数の数は合ってないし、返値もみてないのに、
律儀にmax取っていたり、釣りか間抜けとしか思えん。 効率とか言っちゃってんのワロス
- 495 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:40:06 ]
- >>494
省略しただけだろ エッセンスの方を見ろよ
- 496 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 16:10:53 ]
- おいしい成分は何ひとつありませんでした
ちゃんちゃんw
- 497 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 17:55:11 ]
- epollを使ってて、切断を検出したいんだけど、
EPOLLOUTが帰ってきたあと、recv(...) == 0だったらclose。 という流れを使ってるんだけど、 EPOLLHUPを使って切断って検出できない?
- 498 名前:デフォルトの名無しさん [2007/11/19(月) 10:16:40 ]
- Linuxでプログラム書いてますが、
ソケットの状態を取得する関数はありますか? getsockoptは状態ではなく設定を取得する関数なので要領を得ません とりあえず、接続中か接続済みか未接続かを ソケットディスクリプタから得るだけでもいいです
- 499 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 10:44:23 ]
- >>498
getpeernameあたり。
- 500 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 11:09:21 ]
- >>499
なるほどその手があるのか ありがとう
- 501 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 15:44:17 ]
- >>497
やりたいのはずばりEPOLLRDHUPでのedge triggerちゃいますの?
- 502 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:03:29 ]
- >>501
エッジトリガっていうのかどうかわ解らないけど、 向こう側でソケットをcloseしても、こっちにHUPが飛んでこないんです 向こう側がcloseしてソケットを閉じたら、HUPが飛んできてほしい。 飛ばない仕様になってるならrecv==0を使うけど。 誰か詳しいひとおせーてください
- 503 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:13:15 ]
- >>502
提供された情報に反応してください。
- 504 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 08:52:58 ]
- >>503
HUPが来ないんじゃ仕方ない
- 505 名前:デフォルトの名無しさん mailto:age [2007/11/21(水) 10:20:39 ]
- solarisで開発してるんだけど、
ノンブロッキングモード(?)でrecv()の戻り値が -1なんだけどerrnoが0になるんだが・・・ これってどういう状態なんでしょう? 期待値としてはEAGAIN(?)だと思ってるんですが。 ソケットプログラミング素人にどなたか救いの手をorz。 ちょっと困ってるんでageで。
- 506 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:32:31 ]
- errnoよりperror()が使いやすいよテスト
- 507 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:35:17 ]
- >>506
EAGAINの度にエラー吐かれたらたまらんぞ。
- 508 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 10:38:56 ]
- そもそもエラってるのにerrnoが0?
差し支えなければ前後のソースを少し晒してくれると
- 509 名前:506 mailto:sage [2007/11/21(水) 11:12:59 ]
- >>508
ありがとうございます。えっとソースは抜粋&中略ですが、 大まかな動きはこんな感じです。 現象としては2kbyte程度のデータを流すと一度に取りきれないので、 selectで再ループして残りを取得する動作を期待しているのですが、 2回目以降のrecv()が-1となるのですが、errnoがEAGAINにならないので エラーになって回線を切ってしまいます。 試しにEAGAINと0を対象として(コメント部)selectするようにしたら、 ちゃんと残りのデータを取る事が出来ました。 while( iLeftOver > 0 ) { /* 指定バイト数を受信、または通信の遮断まで受信データを取得 */ errno = 0; if( ( iRcvRet = recv( stSocket, pcBuff, iLeftOver, iFlag ) ) == DCC_SOCKET_ERROR ) { printf("iRcvRet[%d]/recv()直後errno[%d]\n", iRcvRet, errno); iErrCode = dwp_getErrNo(); if( EAGAIN == iErrCode ) //if (( EAGAIN == iErrCode ) || ( 0 == iErrCode )) { /* 受信準備ができていない場合、selectで受信するまで待つ */ FD_ZERO( &stFdSet ); FD_SET( stSocket, &stFdSet ); dcc_setTimeval( 1000, &stTmVal ); /* 待ち時間は1秒 */
- 510 名前:506 mailto:sage [2007/11/21(水) 11:14:48 ]
- (一回で送れませんでした。続きです・・・)
iSelectRet = select( FD_SETSIZE, &stFdSet, NULL, NULL, &stTmVal ); if( iSelectRet == DCC_SOCKET_ERROR ) { /* selectのエラー */ (中略) return DCC_SOCKET_ERROR; } if( iSelectRet == 0 ) { /* タイムアウト */ (中略) return DCC_SOCKET_ERROR; } /* 受信を検知 */ continue; } /* 受信エラー */ (中略) return DCC_SOCKET_ERROR; } else if( iRcvRet == 0 ) { /* 通信の終了 */ (中略) return 0; /* 通信の切断 */ } /* 一度のrecvで受信し切れなかった場合、受信サイズ、バッファの位置を書き換えて 再度recvを行う*/ iLeftOver = iLeftOver - iRcvRet; pcBuff += iRcvRet; }
- 511 名前:506 mailto:sage [2007/11/21(水) 11:17:40 ]
- あまり意味ないけどコンソール上には
>iRcvRet[-1]/recv()直後errno[0] 表示されてしまいまふ。
- 512 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 13:52:59 ]
- #include <errno.h>はインクルードしてますか?
(必要なOSの場合に; 今時pthread絡みで必ず必要だけど) 自分でextern int errnoしてたら殺しますよ。
- 513 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:36:48 ]
- errno=0をerrno=100にしたら100のままだったりしてねw
- 514 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:38:18 ]
- Linux&(C or C++)でhttps通信を利用したプログラムを作りたいのですが、
httpsを利用できるライブラリは無いでしょうか。 ghttpがあったのですが、httpsには対応していないようで困っています。
- 515 名前:506 mailto:age [2007/11/21(水) 15:25:02 ]
- >>512
errno.hはインクルードはしてあります。 その直後にextern int errnoもしてました。 これは不味いんですか? 恥ずかしながらUNIXはホントわからないんです・・・。 >>513 まさにその通りです。 recv()の前後でerrnoの値が全く更新されません。 と、言うことで「extern int errno」の行を削除して みたのですが現象は変わりません。 その書き込みから見ると非常に基本的な部分で間違いが あると思いますがなんとも分かりません。 他に考えられる原因はありますでしょうか? その他のソース部分には、errno.hのインクルード等は されていません。 ちなみに動作環境はsolaris8、開発環境はeclipse+CDTで、 コンパイラはgccのVer2.8.1を使ってます。 厨な質問で申し訳ないです。m(__)m
- 516 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 15:42:46 ]
- >>515
errnoが通常の変数の場合、マルチスレッド環境だと、errnoを取得する前に別スレッドが書き換えてしまう ケースがあり、正常に動作しないので、 最近のOS/ライブラリでは、#defineで「errno」をスレッドごとに確保された記憶領域へアクセスする関数に 置き換えてる。
- 517 名前:506 mailto:sage [2007/11/21(水) 15:58:11 ]
- >>515
お付き合いありがとうございます。 要は「#include <errno.h>」のみやれば良いとの認識で 良いでしょうか? manpageによると ------------------------------------------------------------ errno は、ISO C standard で int 型の変更可能な左辺値として 定義されており、明示的に宣言を行ってはならない; errno はマクロの場合もありえる。 errno はスレッド毎に値を持つ。 つまりあるスレッドで errno が設定されても、他のスレッドの errno には 影響しない。 ------------------------------------------------------------ とありました。 しかし、#include <errno.h>をしているのは、 私がUPしたソースのあるファイルのみでしか宣言してなく、 マルチスレッド環境ではありますがこのソースは、 単一のスレッド上でのみ動きます。 (上の説明からだと複数で動いててもそれぞれ独立してerrnoを 持っていると言う事になると思いますが。) にも関わらず>>513のような挙動になるのは何故なんでしょうか? どこか別のヘッダ等でexternとかしてるんでしょうか・・・ だから俺には短期間じゃ無理な作業だと言ったのに(T。T)>>会社 と、愚痴をこぼしてみる。スイマセン。
- 518 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 16:23:23 ]
- とりあえずな、>>506の言う通り、
perror()をprintf("iRcvRet〜の前に付け加えてみな。 後ろじゃダメだぞ。
- 519 名前:506 mailto:sage [2007/11/21(水) 16:48:59 ]
- >>518
ありがとうございます。perror()を使用したところ >>recv(): 資源が一時的に使用できません。 と返ってきて、EAGAINである事が確認出来ました。 と、なると後はなんでerrnoが変更されないのかですね。 一歩前進(?)しましたありがとうございます。 絞る知恵もなくなったので、ネットで検索しまくってます。
- 520 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 17:11:11 ]
- 環境のせいかもね
1. errno.h にバグがある 2. インクルードしている errno.h のパスがおかしい 3. ライブラリとコンパイラが不整合
- 521 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 17:25:47 ]
- ネットワーク関係なくなってきてるが、
#include <errno.h> int geterrno(void) { return errno; } これだけのファイルをgcc -Eしてみな。 int geterrno(void) { return (*__アドレス返す関数名()); } にならないとまずい。 なってるならソースコードのerronoをgeterrno()に変えて終了。 左辺値参照はどうせまともな意味のあるコードないだろうし。
- 522 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 18:20:38 ]
- gcc 2.8.1ってなんだよ…
2.95.4とかなら分かるけど。 窓から捨てろ
- 523 名前:506 mailto:sage [2007/11/21(水) 22:35:07 ]
- >>520-522
お返事遅くなってしまいました。 すみません&ありがとうございます。 >>521 明日試してみます。 >>522 用意されたサーバのを使ってるだけなので 私はどうにも出来ませんorz。 察するに「古くて使い物にならねー。」って事で 良いでしょうか?このあたりも原因あるのでしょうか・・・ ソケットなんて昔からあるので大丈夫な気もしますけど。 スレ違いにもなりかけてるので、以上を踏まえて精進します。 皆さん長々とお付き合い下さってありがとうございました。 感謝します(-人-)
- 524 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 07:17:32 ]
- サーバ上のCGIに文字列を渡して、その文字列を保存しようとしてるのですが
日本語等の2バイト文字を渡すと正常に受け取ってくれません。 char *mozi = "test.cgi?,testあ" hRequest = HttpOpenRequest( hHttpSession, "GET", mozi,//■CGIへ渡す文字列です NULL,NULL,NULL,0,0); 上記では「testあ」という文字列をCGIに送信していますが、CGI側では 「test0x000000000008p-10224」 という風に2バイト文字のみエラー認識されてしまいます。 どうすればCGIに2バイト文字を送信できるのでしょうか?
- 525 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 07:44:54 ]
- %82%A0%82%D9
- 526 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 07:49:32 ]
- char *mozi = "test.cgi?,test%94%C2%88%E1%82%A2"
hRequest = HttpOpenRequest( hHttpSession, "GET", mozi,//■CGIへ渡す文字列です NULL,NULL,NULL,0,0);
- 527 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 08:32:44 ]
- >>524
CGI エンコード
- 528 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 08:38:54 ]
- >>525
>>526 >>527 検索してみた所、それらしい参考文献が見つかりました。 早速実装して試してみたいと思います。ありがとうございました。
- 529 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 08:52:58 ]
- %82%A8%82%DC%82%A6%82%E7%90e%90%D8%82%BE%82%C8%82%97
- 530 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 09:25:37 ]
- %8E%C0%91%95%8A%AE%97%B9%81%41%8A%B4%8E%D3
- 531 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 09:45:50 ]
- エンコード状態で会話すんなwwwwwwwwwwww
- 532 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 10:14:24 ]
- socket通信しているときに、相手方が shutdown(s, SHUT_WR) した時、
こちら側ではselect()から抜けて、read() で検知することができますが、 その後、相手が close() または shutdown(s, SHUT_RD) したことを 検知することはできないでしょうか?
- 533 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 11:16:35 ]
- CGI円コード程度ならgoogleに食わせれば翻訳してくれる
www.google.co.jp/search?hl=ja&q=%8E%C0%91%95%8A%AE%97%B9%81%41%8A%B4%8E%D3 www.google.co.jp/search?hl=ja&q=%82%A8%82%DC%82%A6%82%E7%90e%90%D8%82%BE%82%C8%82%97 www.google.co.jp/search?hl=ja&q=%94%C2%88%E1%82%A2 www.google.co.jp/search?hl=ja&q=%82%A0%82%D9
- 534 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:43:38 ]
- ttp://%90%C0%82%C1%82%C4%82%E6%82%B5
- 535 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 19:35:15 ]
- >532
writeが-1を返すとか。 selectのexceptfdsが反応するとか。
- 536 名前:532 mailto:sage [2007/11/29(木) 02:22:04 ]
- >>535
exceptfds は、相手方がMSG_OOBでデータを送ってくれないと 反応しないですね。 write は確かに-1 (EPIPE) を返してくれるのですが、こちらから 送信するときに分かるけれども、相手がcloseしたタイミングで 検知できるわけではないので、 難しそうですね。ありがとうございます。
- 537 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:36:41 ]
- というか、先に向こうがSHUT_WRしているんだから、
こっちはwriteしかできないわけだし。気にくわなければ すきなだけwriteして、むこうがSHUT_RD(残りclose)を発行する 前に、こっちからcloseしてやれば?
- 538 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:58:19 ]
- なんか失恋とか離婚とかそんな勢いだなw
- 539 名前:デフォルトの名無しさん mailto:sega [2007/12/01(土) 19:43:02 ]
- Linuxでサーバプログラム書いてるんだけど
acceptする前に相手のIPとポートを知る方法ってある?
- 540 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:49:23 ]
- 特定のアドレスからの接続は拒否りたいとか?
acceptを呼ぶ前に接続は完了してるらしいから、無意味じゃない? www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-3.html#ss3.3
- 541 名前:539 mailto:sage [2007/12/01(土) 19:52:23 ]
- >>540
アリガトウ そういえばそうだったね 忘れてた
- 542 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:46:07 ]
- 送られてきたパケットのIPヘッダー部分を生ソケットでパースすればいけそうだけどね
俺はヘッダー処理を書いたことはあるが、パース処理までやる気はまだない
- 543 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:00:40 ]
- ヘッダー処理って何んだろう
パース処理ってのがIPヘッダの解析なら 別に何にも難しいことないだろ
- 544 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:10:03 ]
- バカには難しいんだよw
- 545 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:43:26 ]
- どこにも難しいとは書いてない件について
- 546 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:11:13 ]
- >>539
何のために?
- 547 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 11:08:10 ]
- エラーがでるのですが、なぜでるのか私にはわかりません。
一体なぜエラーが出るのかを教えていただけませんか? tool-6.net/?cnum
- 548 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 11:15:55 ]
- ちょtぅwwwwwwwww
何そのやる気0の他力本願寺は
- 549 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 11:20:17 ]
- バグを発見したときは、
・発生時刻 ・バグの詳細 ・(できるなら)一次解析結果 を調べるのは常識だぞな
|

|