1

TCP ソケット経由でデータを受信しようとしています。以下のコードを実行すると、次の出力が得られます: localhost^V^A^@。バイナリを使用してデータを送信する場合、データを変換する必要があることは承知していますが、リストを送信しているので、同じように受信されると思っていました。 ? ホスト文字列は正しく表示されるのに、他のデータが表示されないのはなぜですか?

どんな助けでも大歓迎です、ありがとう。

cell_process(Port, X, Y)->
    Host = "localhost",
    Data = [Host,Port,X,Y],
    {ok, Socket} = gen_tcp:connect(Host, 22, 
                                 [list, {packet, 0}]),
    ok = gen_tcp:send(Socket, Data),
    ok = gen_tcp:close(Socket).


server_process(ClientList)->
{ok, Listening_socket} = gen_tcp:listen(22, [list, {packet, 0}, 
                                        {active, false}]),
{ok, Socket} = gen_tcp:accept(Listening_socket),
    case gen_tcp:recv(Socket,0) of
        {ok,Message}->
            io:fwrite(Message);
        {error,Why}->io:fwrite(Why)
    end.
4

1 に答える 1

2

Data = [Host,Port,X,Y]リストではなくアイオリストです。
gen_tcp:send はデータを[<<"localhost">>,<<22:8>>]

iolist のドキュメントは次のとおりです。

iodata() = iolist() | binary()
iolist()     maybe_improper_list(char() | binary() | iolist(), binary() | [])
maybe_improper_list()     maybe_improper_list(any(), any())
byte()     0..255
char()     0..16#10ffffmaybe_improper_list(T)     maybe_improper_list(T, any())
于 2013-08-13T03:04:46.150 に答える