[過去ログ]
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1478440682/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
149: 1/2 [] 2017/01/04(水) 02:39:58.96 ID:9INFfbdp このサイトを参考にコードを書いているのですが、レスポンス中に無反応になります。 助けてください。 http://qiita.com/edo_m18/items/41770cba5c166f276a83 このコードとの差異は以下の通りです。 ---------------------------------------------------------- read_size = SSL_read(ssl, buf, buf_size);の前に memset( buf, 0, buf_size );を挿入 write(1, buf, read_size);を printf("%s",buf);に変更 close(sock);の後に printf("OK.\n");を挿入 拡張子をcppとし、C++としてコンパイル。 ---------------------------------------------------------- この変更したコードのprintf("%s",buf);で不具合が生じます。 不具合パターンは以下の2通りです。 ・ 恐らく受信したHTMLの最終部分と思われる</body></html>を出力後、2行ほどの空行、そして0という数字が出力された後、無反応になる。 ・ レスポンスヘッダやHTMLコードの途中で無反応になる。 無反応時にはEnterキーもCtrl+Cも効きません。 しばらくすると、効くようになります。 但し、printf("OK.\n");によるOKが出力されませんので、異常終了している可能性が高いです。 http://mevius.5ch.net/test/read.cgi/tech/1478440682/149
151: デフォルトの名無しさん [sage] 2017/01/04(水) 03:14:24.95 ID:sO2gccKh >>149 > printf("%s",buf);に変更 %sは文字列のアドレスを引数として受けてそれを出力する C言語で文字列とはNUL終端されたバイト列だが SSL_readは文字列ではなく只のバイト列を扱うからNUL終端なんてしていない そのために受信した文字列以上のおそらくbufの領域を越えて偶然にゼロに 出くわすまでprintfが出力しているんだろう 付け加えると、サーバーから送られてくるバイト列中にゼロが含まれていると 文字列として扱おうとしたprintfはそこまでで終わりと見做してしまう 例えば2ちゃんはたまにそんなHTMLを返してくることがあっていい加減な作りの 自作アプリなんかが途中までしか表示しないとかいう不具合を出す http://mevius.5ch.net/test/read.cgi/tech/1478440682/151
152: 149 [sage] 2017/01/04(水) 03:47:33.12 ID:9INFfbdp >>151 ありがとうございます。 初歩的なミスでお恥ずかしい。 バイナリデータとしてファイルに出力したところ正常に動作しました。(ファイルの内容にも問題ありませんでした) 恐らくマルチバイト文字の途中か何かで切れていたのでしょう。 http://mevius.5ch.net/test/read.cgi/tech/1478440682/152
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.027s