我需要将原始数据传输到服务器,该服务器不是http-Server。即它不了解POST,PUT或类似命令。它只是侦听等待输入数据的端口,对它们进行处理并将数据发送回去。顺便说一句:服务器正在侦听非标准端口3500。
无论我在cURL中尝试过什么选项,我都无法正确传输数据。在发送实际数据之前,cURL始终至少发送“ POST”或“ PUT”。然后服务器以“ ...无效数据...”回应我。
我尝试过的选项:--data-raw,--data-binary,--upload-file,--raw,仅举几例。
在cURL发送数据之前,是否有机会抑制“ POST”或“ PUT”的传输?
答案 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),或编写一个小型的,可以进行双向通信的程序。