2016-06-01 11 views
0

私はtcpソケットを使用してタプルを送信しようとしていますが、gen_tcp:send(Socket、{elem1、elem2})を使用していますが、出力ポート 'tcp_inet'に "誰も私はどのようにソケットを介してタプルを送信できますか教えてください?Erlangのtcpソケットでタプルを送信

返信いただきありがとうございます。

答えて

1

第二引数は、パケットでなければなりません:あなたのケース{elem1,elem2}

Packet = string() | binary() | HttpPacket 

HttpPacket = HttpRequest 
      | HttpResponse 
      | HttpHeader 
      | http_eoh 
      | HttpError 
HttpRequest = {http_request, HttpMethod, HttpUri, HttpVersion} 
HttpResponse = 
    {http_response, HttpVersion, integer(), HttpString} 
HttpHeader = 
    {http_header, 
    integer(), 
    HttpField, 
    Reserved :: term(), 
    Value :: HttpString} 
... 

は、これらのタイプのいずれにも一致しないとエラーが発生します。 binary_to_term(ReceivedBinary)私の問題は、私はJavaクライアントへのタプルを送信してるということです

+0

、あなたはどのように知っていますか:あなたはそれを受信したときterm_to_binary(YourTerm)

をして、それをデシリアライズ:任意の用語を送信する通常の方法は、まず、それをシリアル化することですそれをJavaで逆シリアル化するのですか? –

+0

http://erlang.org/doc/apps/erts/erl_ext_dist.html http://stackoverflow.com/questions/7817213/erlang-serialization-libraryおよびhttp://stackoverflow.com/をご覧ください。質問/ 15775554/jitterface-object-in-string-serialized-erlang-to-jinterfaceオブジェクトのデシリアライズ方法 – Amiramix

+0

または、シリアル化を行い、Javaクライアントがどのようにしてこのようにパケットを構築するか各要素を取得して解釈します。これは、各要素がJavaクライアントに直接的な意味を持つもの、例えばタプルではないものと仮定しています。 :-) – rvirding

関連する問題