erlang/elixir gen_tcp 连接 - 未连接但 telnet 将
erlang/elixir gen_tcp connect - not connecting but telnet wil
我有一台可以远程登录的 (zebra) 打印机:
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()
}
但我似乎无法通过 elixir/erlang 通过 gen_tcp:
连接
opts = [:binary, active: false]
{:ok, socket} = :gen_tcp.connect('192.168.101.051', 9100, opts)
Iex 只是冻结并最终超时。工作正常连接到例如redis ...
我假设此连接有某些选项或质量导致它从 elixir/erlang?
失败
我发现 gen_tcp 文档没有帮助 - 我尝试了一堆不同的参数。
问题是 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>}
我有一台可以远程登录的 (zebra) 打印机:
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()
}
但我似乎无法通过 elixir/erlang 通过 gen_tcp:
连接opts = [:binary, active: false]
{:ok, socket} = :gen_tcp.connect('192.168.101.051', 9100, opts)
Iex 只是冻结并最终超时。工作正常连接到例如redis ... 我假设此连接有某些选项或质量导致它从 elixir/erlang?
失败我发现 gen_tcp 文档没有帮助 - 我尝试了一堆不同的参数。
问题是 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>}