我有一个字符串数组.当我使用.toString()输出它时,引号不会被保留.这使得使用"in"构建mysql查询变得很困难.考虑以下:
SELECT * FROM Table WHERE column IN ('item1','item2','item3','item4')
toString is returning: IN (item1,item2,item3,item4)
Run Code Online (Sandbox Code Playgroud)
必须有一个我在这里忽略的简单修复.
的一个很酷的功能netcat是它如何将任何命令行程序转换为服务器。例如,在Unix系统上,我们可以通过将date二进制文件传递给来制作一个简单的日期服务器,netcat以便stdout通过套接字发送它:
netcat -l -p 2020 -e date
Run Code Online (Sandbox Code Playgroud)
然后,我们可以通过简单地发出以下命令从另一台机器上调用此服务:
netcat <ip-address> 2020
Run Code Online (Sandbox Code Playgroud)
/bin/sh尽管我知道这是极不推荐的做法,并且对安全性有很大影响,但即使是外壳也可以连接()。
同样,我尝试制作自己的简单C程序,该程序可以从stdin和读取和写入stdout:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char const *argv[])
{
char buffer[20];
printf("Please enter your name:\n");
fgets(buffer, 20, stdin);
printf("Hello there, %s\n", buffer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我从另一个终端调用服务时,没有初始问候。实际上,问候语仅在发送一些信息后才打印。例如:
user@computer:~$ netcat localhost 2020
User
Please enter your name:
Hello there, User
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能使问候语首先通过套接字发送,然后等待输入,然后发送最终消息(就像我直接调用二进制文件一样)?
我知道可能会有更好(甚至更安全)的方法来实现这样的系统,但是我对的功能netcat以及为什么它不起作用感到好奇。