2012-01-09 6 views
0

リモートサーバーとの直接通信も可能なC言語のSSLクライアントライブラリがありますか?サーバとの直接通信を可能にするCのHTTPライブラリですか?

私は、クライアントがサーバーでセッションを開始するためにHTTPを使用し、サーバーからHTTPへの接続を別のプロトコルに切り替えるように指示するクライアントサーバーアプリケーションを持っています。すべての通信はSSLでカプセル化されています。これはPerlで書かれていますが、私はC言語でクライアントを実装しようとしています。

libcurlは下位ソケットにアクセスできますが、SSL要件のため十分ではありません。

答えて

1

libcurlはOpenSSLを使用してSSL部分を単独で実行しないことに注意してください。したがって、最初のHTTPインタラクションの後にlibcurlからソケットハンドルを取得でき、それが使用しているセッションキー(いくつかのスペルが必要)があれば、そのポイントから直接OpenSSLを使うことができます。

+0

必要な機能はCurl_ssl_getsessionidですが、これは文書化されていないようです。ですから、私の答えは、文書化されていないインターフェイスの使用に関する制限がない場合にのみ、オプションです。 –

+0

この方向に私を指摘してくれてありがとう。私はCurl_ssl_getsessionidをどのように使うことができるかわかりませんが、CURLセッションは実際には接続のキャッシュを格納する "struct SessionHandle"へのポインタであることがわかります。だから理論的には、私はこのようなものをSSLチャネルに直接書くことができるはずです: 'CURL * curl = ...; struct SessionHandle * handle =(struct SessionHandle *)curl; struct connectdata * conn = handle-> state.connc [0]; SSL * ssl = conn-> ssl [0] .handle; ' – Joni

+0

私はむしろCURLOPT_CONNECT_ONLYを見てからcurl_easy_recv/curl_easy_sendを調べるといいでしょう。ソースを突き止めたり、APIの外に出たりする必要はありません。 –

0

あなたが好きなような音Web Socketsしかし、利用可能なCライブラリがあるかどうかはわかりません。あなたが掘るなら、私はそこにいると思います。

+0

おかげのように、それを自分で書くために持っている必要がありますあなたがthisを探してしなければならないと思います!以前はウェブソケットを見ていなかった。達成しようとしていることは非常に似ています。これらの人は、それらのCライブラリを持っているようです:http://warmcat.com/ – Joni

1

私はそうあなたがthis

+0

この簡単なHTTPドキュメントもお勧めします。http://www.jmarshall.com/easy/http/ – nob

関連する問題