实际上我在windows-clients和linux服务器之间建立连接,使用vb.net作为客户端,netcat作为服务器。
问题是我无法使用client_receive()
接收任何内容,因为我无法将数据从服务器发送回打开的netcat套接字连接内的客户端。此外,我正在寻找一种不直接回应客户的方法 - 而非时间独立。连接需要保持打开,服务器可以使用例如连接的客户端对连接的客户端说任何内容echo '$message' > /dev/tcp/client.ip/4000
与screen
结合使用。重要的是它需要是相同的连接,没有新的。
使用以下代码,我能够将字符串发送到netcat正在侦听的端口:
Dim stream As NetworkStream
Dim streamw As StreamWriter
Dim streamr As StreamReader
Dim myclient As New TcpClient
Dim IP As String = "example.com"
Dim Port As Integer = 4000
Public Sub client_send(ByVal text As String)
streamw.WriteLine(text)
streamw.Flush()
End Sub
Public Function client_receive() As String
client_receive = streamr.ReadLine
End Function
Private Sub Welcome_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
myclient.Connect(IP, Port)
stream = myclient.GetStream
streamw = New StreamWriter(stream)
streamr = New StreamReader(stream)
Catch
End Try
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles iamonline.Tick
client_send("ItzMe")
MessageBox.Show(client_receive)
End Sub
我们每5秒向端口4000 / tcp发送ItzMe
。
在netcat屏幕中,我们看到:
ItzMe
ItzMe
...
更新#1:更改了Timer1
更新#2:详细解答问题
答案 0 :(得分:2)
试试这个:
while true ; do nc -l -p 4000 -c 'echo -e "message received"'; done
使用socat,您可以创建一个简单的echo服务器:
socat -v tcp-l:4000,fork exec:'/bin/cat'
或者,如果您没有-c
参数:
mkfifo fifo
cat fifo | nc -k -l 4000 -v | cat > fifo