如何用netcat回答vb.net TCP客户端?

时间:2017-07-10 14:54:56

标签: vb.net sockets tcp netcat

实际上我在windows-clients和linux服务器之间建立连接,使用vb.net作为客户端,netcat作为服务器。 问题是我无法使用client_receive()接收任何内容,因为我无法将数据从服务器发送回打开的netcat套接字连接内的客户端。此外,我正在寻找一种不直接回应客户的方法 - 而非时间独立。连接需要保持打开,服务器可以使用例如连接的客户端对连接的客户端说任何内容echo '$message' > /dev/tcp/client.ip/4000screen结合使用。重要的是它需要是相同的连接,没有新的。

使用以下代码,我能够将字符串发送到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:详细解答问题

1 个答案:

答案 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