在python中侦听端口并捕获数据

时间:2014-12-26 15:00:41

标签: python

我在C中使用一个应用程序,它将连续数据发送到指定的端口。我可以使用' Putty'来查看传入的数据。 (使用telnet 127.0.0.1端口30003)。

现在我想捕获那些数据进行处理。请在python中建议如何做到这一点?

数据逐行流动,速率为每秒5行。我应该逐行读取数据以进行处理并在窗口中显示它。

2 个答案:

答案 0 :(得分:2)

这听起来像是家庭作业......你没有尝试过这样做。

在python中,为了接收和发送数据(并且绝对交换数据),我们使用名为socket的库。你有两个脚本,一个服务器端(你用C编写)和一个客户端脚本。

客户端示例

import socket, time
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 5000))
while 1:
    time.sleep(5) # wait 5 secs.
    data = client_socket.recv(512)
    if ( data == 'q' or data == 'Q'):
        client_socket.close()
        break;
    else:
        print "RECIEVED:" , data
        data = raw_input ( "SEND( TYPE q or Q to Quit):" )
        if (data <> 'Q' and data <> 'q'):
            client_socket.send(data)
        else:
            client_socket.send(data)
            client_socket.close()
            break;

这是一个客户端脚本示例,每5秒接收一次数据并打印出来。我希望你能适应它以满足你的需求。

来源:(Very) basic Python client socket example

答案 1 :(得分:1)

安装tcpflow

运行给定的脚本

import os

INTERFACE = "lo"

PORT = "30003"

os.system("tcpflow -i %s port %s" % (INTERFACE, PORT))

它会将来到端口的请求写入脚本位置的127.000.000.001.06080-127.000.000.001.6347等文件中