erlang / elixir gen_tcp connect - 不连接但是telnet wil

时间:2017-12-18 23:05:06

标签: sockets erlang elixir gen-tcp

我有一台(斑马)打印机,我可以telnet到:

jasongoodwin$ telnet 192.168.101.051 9100
Trying 192.168.101.51...
Connected to 192.168.101.051.
Escape character is '^]'.

然后我可以从控制台发送一些数据,它会为我打印一个标签。

我也可以从scala连接和打印没问题:

def printZpl(zpl: String, ip: String, port: Int): Unit = {
  val clientSocket = new Socket(ip, port)
  val outToServer = new DataOutputStream(clientSocket.getOutputStream())
  outToServer.writeBytes(zpl)
  clientSocket.close()
}

但我似乎无法通过gen_tcp通过elixir / erlang连接:

opts = [:binary, active: false]
{:ok, socket} = :gen_tcp.connect('192.168.101.051', 9100, opts)

Iex只是冻结并最终超时。工作正常连接到例如redis ... 我假设这个连接有一些选项或质量导致它从elixir / erlang失败?

我发现gen_tcp文档无益 - 我尝试了一堆不同的参数。

1 个答案:

答案 0 :(得分:1)

问题是IP地址前面有0

{:ok, socket} = :gen_tcp.connect('192.168.101.051', 9100, opts)

如果我这样连接就行了。

iex(1)> opts = [:binary, active: false]
[:binary, {:active, false}]
iex(2)> {:ok, socket} = :gen_tcp.connect('192.168.101.51', 9100, opts)
{:ok, #Port<0.1243>}