如何从命令行将主机名传递给gen_tcp
我想将主机名和端口从命令行传递到gen_tcp.connect如何从命令行将主机名传递给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
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)。是的,就是这样。谢谢