python udp监听器没有显示进程监听端口

时间:2017-01-19 11:16:52

标签: python udp ip port python-sockets

我有一个脚本,它在端口8087上侦听传入的udp数据包:

IP_ADDRESS = '0.0.0.0'
LISTEN_PORT = 8087

serverSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
serverSock.bind((IP_ADDRESS, LISTEN_PORT))

while True:
        data, addr = serverSock.recvfrom(1024)

我运行脚本,如果我发送数据包就可以获取数据。

当我sudo netstat -peant | grep ":8087 "查看此端口上的流程时,我没有任何结果。

例如,当我执行sudo netstat -peant | grep ":80 "时,我会获得在此端口上侦听进程的结果。

为什么? udp服务器代码出了什么问题?不应该听8087吗?

1 个答案:

答案 0 :(得分:0)

您的服务器侦听正确的端口,但需要正确的数据处理。 学习下面的代码,你将对此有一个很好的理解。

from socket import *
import string
from time import ctime

HOST = '127.0.0.1'
PORT = 8087
BUFSIZ = 1024
ADDR = (HOST, PORT)
ssock = socket(AF_INET, SOCK_STREAM)
ssock.bind(ADDR)
ssock.listen(5)
try:
    while True:
        c = 1
        print 'Waiting for a connection...'
        csock, addr = ssock.accept()
        hostname, aliases, addresses = gethostbyaddr(addr[0])
        lip, lport = ssock.getsockname()
        print '''
Connected ...
Remote Host     : %s
Remote host IP  : %s
Remort Port     : %d
Connected time  : %s

Local IP        : %s
Local Port      : %d \n''' % (hostname , addr[0], addr[1], ctime(), lip, lport)
        while True:
            data = csock.recv(BUFSIZ)
            if data == 'q':
                break
            elif data == 'shut':
                ssock.close()
                break
            elif data == ' ':
                csock.send('Server Responce: <> \n')
                print 'srv responces: %d : <>' % c
                c += 1
            else:
                data1 = data.upper()
                csock.send('Server Responce: %s \n' % data1)
                print 'srv responces: %d : <%s>' % (c, data1)
                c += 1
        csock.close()
except:
    print 'Server socket closed !!!'