1

Erlang Programmingで提案された演習の 1 つは、ブラウザからのリクエストを を使用して画面に出力することでしたgen_tcp。次のようにhttpリクエスト用に作成しました:

-module(tcp).
-export([server/0, wait_connect/2]).

server() ->
    {ok, ListenSocket} = gen_tcp:listen(1234, [binary, {active, false}]),
    wait_connect(ListenSocket,0).

wait_connect(ListenSocket, Count) ->
    {ok, Socket} = gen_tcp:accept(ListenSocket),
    spawn(?MODULE, wait_connect, [ListenSocket, Count+1]),
    get_request(Socket, [], Count).

get_request(Socket, BinaryList, Count) ->
    Request = gen_tcp:recv(Socket, 0),
    io:format("~p~n", [Request]).

httpsリクエストの場合、これをどのように行うことができるのか疑問に思っています。非常に簡単な例を挙げていただけますか、それとも書籍やオンラインのリソースを教えていただけますか?

4

2 に答える 2

3

Erlang SSL アプリケーションのユーザー ガイドは次のとおりです。 Erlang -- SSL ユーザー ガイド

このガイドには、API の章に、既存の接続を SSL に更新するための段落も含まれています。

コードに関しては、次のようにする必要があります。

  • サーバー側とクライアント側では、次を発行する必要があります。 ssl:start()
  • サーバー側: ハンドシェイク SSL (リスニング ソケットの「アクティブ」を false に設定することを忘れないでください)

    {ok, SSLSocket} = ssl:ssl_accept(Socket, [{cacertfile, "cacerts.pem"}, {certfile, "cert.pem"}, {keyfile, "key.pem"}]).

    ここで、「cacerts.pem」、「cert.pem」、「key.pem」は SSL 証明書に関連するファイルです。

  • クライアント側: SSL への接続のアップグレード: {ok, SSLSocket} = ssl:connect(Socket, [{cacertfile, "cacerts.pem"}, {certfile, "cert.pem"}, {keyfile, "key.pem"}], infinity).

ドキュメントによると、SSLSocket は次のようなメッセージの送信に使用できる ssl チャネルになりました。 ssl:send(SSLSocket, "foo").

お役に立てれば!

于 2011-07-25T11:08:26.407 に答える
1

SSL エコー サーバーとクライアントの完全なコードを含む、Erang の SSL ソケットに関する次の記事を読むことをお勧めします。

Erlang SSL ソケットの例 - SSL サーバーとクライアント)

于 2012-06-03T22:10:17.003 に答える