【发布时间】:2014-07-22 23:04:18
【问题描述】:
我有一个 python 脚本,它从远程机器获取数据包并写入它们 (os.write(self.tun_fd.fileno(), ''.join(packet))) 到一个tun接口gr3:
Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.0.0.6 P-t-P:10.0.0.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:61 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:5124 (5.0 KiB) TX bytes:0 (0.0 b)
我想通过单独的 pong 脚本接收这些数据包,如下所示:
import threading, os, sys, fcntl, struct, socket
from fcntl import ioctl
from packet import Packet
HOST = '10.0.0.6'
PORT = 111
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if not data: break
else: print data
conn.sendall(data)
conn.close()
我收到了这个错误:
s.bind((HOST, PORT))
File "<string>", line 1, in bind
socket.error: [Errno 13] Permission denied
【问题讨论】:
-
你有什么问题?这似乎很正常和意料之中......你想知道什么? (111 是一个特权端口。)
-
我认为这是一个非常好的问题,包含完整的代码和错误消息。只是有些事情他/她不知道。如果我们假设 OP 应该知道一切,那么就不会有 SO。
-
我想知道我的 python 在哪个端口上写入 gr3 tun 接口,以便使用 pong 脚本收听它。 os.write(self.tun_fd.fileno(), ''.join(packet)) 没有指定端口