我正在测试一个设备(GPS跟踪),它将数据(GPS位置)发送到给定端口上的给定IP。 我不知道它发送了什么样的数据格式,有没有办法在我的CentOS服务器上侦听给定端口上的传入数据并可能在屏幕上打印?
答案 0 :(得分:1)
扩展我之前留下的评论(当时我无法测试):如果您可以在计算机上访问Python,则可以创建以下简单脚本 - 例如在您调用myServer.py
的文件中(归因:http://ilab.cs.byu.edu/python/socket/echoserver.html - 您将在那里找到有关Python网络编程的更多信息;值得一游):
#!/usr/bin/env python
import socket
host = '' # your IP address
port = 50000 # pick a port you want to listen on.
backlog = 5 # number of clients you could handle at once
size = 1024 # max size of data packet
# create socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# connect to host / port:
s.bind((host,port))
# start listening:
s.listen(backlog)
# stay in this loop until ctrl-c is typed at console:
while 1:
client, address = s.accept()
data = client.recv(size)
if data:
print data # echo data to console
client.send(data) # echo data to client (may confuse your application, great for browser)
client.close()
当我在Mac上通过输入
运行它时chmod 755 myServer.py # make it executable
./myServer # run the script
然后转到我输入的浏览器
http://localhost:50000/?hello=world
我的浏览器中有以下内容:
GET /?hello=world HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
我的控制台看起来像这样(我在服务请求后点击了ctrl-c):
[myMac:~myCodePath] myName% ./myServer.py
GET /?hello=world HTTP/1.1
Host: localhost:50000
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:25.0) Gecko/20100101 Firefox/25.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
^CTraceback (most recent call last):
File "./srv.py", line 13, in <module>
client, address = s.accept()
File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/socket.py", line 202, in accept
sock, addr = self._sock.accept()
KeyboardInterrupt
我认为这应该是一种合理的方式来查看来自GPS的流量。应该很容易看到如何将响应更改回客户端 - 现在只是请求被回显,但您显然可以发送任何内容
client.send('anything')
如果您对此有任何疑问,请与我们联系。注意我使用了端口50000
- 我猜它会可用。我的机器设置方式我无法使用端口80(默认的html端口),但这主要是防火墙配置等问题。
答案 1 :(得分:1)
我找到了一个程序/命令netcat
,似乎可以满足我的需要。我用Yum安装它,然后我可以输入它来收听端口333,例如:
nc -l 333
它会不断在端口333上打印传入的数据。