使用套接字从c#应用程序向Lua应用程序发送数据

本文关键字:应用程序 Lua 数据 套接字 | 更新日期: 2023-09-27 18:07:49

我的c#应用程序中的这个函数将把字母U发送到另一台PC上的lua应用程序:

private void drive_Click(object sender, RoutedEventArgs e)
{
    Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    System.Net.IPAddress ipAddress = System.Net.IPAddress.Parse("192.168.1.180");
    IPEndPoint remote = new IPEndPoint(ipAddress, 1337);
    soc.Connect(remote);
    byte[] commands = System.Text.Encoding.ASCII.GetBytes("U");
    soc.Send(commands);
}

这是lua中的小脚本,将接收来自c#应用程序的命令并将它们写入串行(它工作正常,我通过使用netcat发送字符尝试过,一切工作正常)

local socket = require("socket")
local server = assert(socket.bind("*", 1337))
wserial=io.open("/dev/ttyATH0","w")
while 1 do
  local client = server:accept()
  client:settimeout(10)
  local line, err = client:receive()
  if not err then client:
    wserial:write(line)
  end
  wserial:flush()
  client:close()
end

我做错了什么?我没有收到任何数据…

谢谢。

使用套接字从c#应用程序向Lua应用程序发送数据

好的,答案是将我的c#代码更改为以下内容:

TcpClient tcp = new TcpClient("192.168.1.4", 1337);
string cmd = "U'n";
byte[] buf = System.Text.ASCIIEncoding.ASCII.GetBytes(cmd.Replace("'0xFF", "'0xFF'0xFF"));            
tcp.GetStream().Write(buf, 0, buf.Length);

小心

string cmd = "U'n";

你必须添加新的行字符,否则将无法工作。