Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从命令行将主机名传递给gen_tcp_Tcp_Elixir - Fatal编程技术网

如何从命令行将主机名传递给gen_tcp

如何从命令行将主机名传递给gen_tcp,tcp,elixir,Tcp,Elixir,我想将主机名和端口从命令行传递到gen_tcp.connect defmodule MyComm.Application do use Application def main(args \\ []) do {options, _, _} = parse_args(args) connect(options[:host], options[:port]) # connect('localhost', options[:port]) end def c

我想将主机名和端口从命令行传递到gen_tcp.connect

defmodule MyComm.Application do
  use Application

  def main(args \\ []) do
    {options, _, _} = parse_args(args)

    connect(options[:host], options[:port])
    # connect('localhost', options[:port])
  end

  def connect(host, port) do
    opts = [:binary, active: false]

    {:ok, socket} = :gen_tcp.connect(host, port, opts)

    :gen_tcp.send(socket, "123\r\n")
  end

  def parse_args(args \\ []) do
    OptionParser.parse(args, switches: [host: :string, port: :integer])
  end
end
运行上述示例会导致:badarg错误:

**(出口):巴达格 (内核)gen_tcp.erl:149::gen_tcp.connect/4 (mycmm)lib/application.ex:14:mycmm.application.connect/2 (elixir)lib/kernel/cli.ex:76:kernel.cli.exec_-fun/2中的匿名fn/3

然而,通过硬编码“localhost”,一切都很好。
这里缺少什么?

您可能需要将主机的字符串参数转换为字符列表<代码>:gen_tcp.connect/4的第一个参数需要一个erlang字符串(Elixir char list)。

是的,就是这样。谢谢