使用cURL传输原始数据

时间:2019-07-31 14:53:42

标签: curl

我需要将原始数据传输到服务器,该服务器不是http-Server。即它不了解POST,PUT或类似命令。它只是侦听等待输入数据的端口,对它们进行处理并将数据发送回去。顺便说一句:服务器正在侦听非标准端口3500。

无论我在cURL中尝试过什么选项,我都无法正确传输数据。在发送实际数据之前,cURL始终至少发送“ POST”或“ PUT”。然后服务器以“ ...无效数据...”回应我。

我尝试过的选项:--data-raw,--data-binary,--upload-file,--raw,仅举几例。

在cURL发送数据之前,是否有机会抑制“ POST”或“ PUT”的传输?

2 个答案:

答案 0 :(得分:2)

我认为这个问题更适合www.superuser.com而不是stackoverflow,并且投票决定将其关闭,但问题是:

这不是卷毛的工作,它是Netcat的工作。使用cat读取文件,使用netcat发送文件并获取响应,例如

cat file.ext | nc server.com 3500

((有几种netcat实现,例如原始*Hobbit*的netcat,GNU netcat和* BSD netcat,我相信有些netcat实现需要语法nc -p 3500 server.com,但是如果您重新使用GNU netcat或Cygwin的netcat或MacOS的netcat,上面的语法应该可以正常工作。据记录,许多Linux系统都随附GNU netcat)

如果您使用的Windows不是cat / netcat附带的Windows,则可以安装同时具有两者的Cygwin。默认情况下,macOS和大多数Linux发行版均随附netcat和cat。

答案 1 :(得分:-1)

您也许可以使用telnet协议选项进行curl来完成所需的操作。

将要传输的原始数据放入文件(或来自stdin的管道)中,并沿以下行执行curl:

cat commands.txt | curl telnet://server:3500

使用telnet协议处理程序进行卷曲,它将连接并传输接收到的数据,然后读取响应。

注意:如果服务器在响应您的命令发送数据后没有终止连接,则curl可能会保持连接打开以等待更多数据。在这种情况下,您可能想尝试nc(netcat),或编写一个小型的,可以进行双向通信的程序。