c# - 使用套接字将数据从C#应用程序发送到Lua应用程序

标签 c# wpf sockets lua

我的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#中的代码更改为以下代码:

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";

您必须添加新的换行符,否则它将不起作用。

关于c# - 使用套接字将数据从C#应用程序发送到Lua应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15864735/

相关文章:

c# - MVVM 疯狂 : Commands

wpf - DateTime 未在 Datagrid、ListView 中以当前区域性格式显示

wpf - 您可以在 DataTemplate 中使用 CollectionViewSource 吗?

c - 为什么 recvfrom 创建额外的 IP header ?

java - 关于简单客户端服务器套接字应用程序的一些问题

c# - "where"在 C# 类声明中意味着什么?

c# - 如果在异步等待后引发,为什么 ThreadAbortException 不会自动重新抛出?

c# - 是否可以在 Web 部件中使用多线程访问 SharePoint 2010 列表?

C#/.NET 消息框不是模态的

c - 通过 socket tcp 发送一个带有空格的字符串