我有一个小程序,它首先向用户输出一个字符串,然后接受一个输入。相反,我希望程序通过从端口发送和接收来工作。为了尝试实现这一点,我运行了命令socat TCP4-LISTEN:1337,reuseaddr,fork EXEC:./program
。通过这个命令,我希望能够运行nc 127.0.0.1 1337
并期望程序:
- 接收来自程序的消息
- 能够提供输入
- 失去联系
但是,当使用socat
它运行程序时,就像这样
- 提供输入
- 从程序收到的消息
- 给另一个输入
- 失去了连接
我不明白为什么会这样。我使用该socat
命令有什么问题吗?如果是,请告诉我缺少/错误的内容。
这是程序。
#include <stdio.h>
void vuln(void) {
printf("Input\n");
char buffer[256];
gets(buffer); // potential buffer overflow
}
int main(void) {
vuln();
return 0;
}