Pythonでソケットを使用してUDPビデオパケットを送信しようとしています。Python:UnixでSocket.error接続が拒否されました[Errno 111]
サーバのIPアドレスは次のとおりです。192.168.67.14
クライアントのIPアドレスは、クライアントとサーバが互いをpingできる192.168.67.42
です。以下は、ソケットを確立するために使用されるコードは次のとおりです。
サーバー側:私は取得
import urllib, time, os, m3u8
from socket import *
# Socket initialization
s = socket(AF_INET, SOCK_DGRAM)
host = "192.168.67.42"
port = 5000
buf = 1024
addr = (host, port)
s.connect((host, port))
ts_filenames = []
while True:
playlist = "https://sevenwestmedia01-i.akamaihd.net/hls/live/224853/TEST1/master_lowl.m3u8"
m3u8_obj = m3u8.load(playlist)
ts_segments = m3u8_obj.__dict__.values()[6]
ts_segments_str = str(m3u8_obj.segments)
for line in ts_segments_str.splitlines():
if "https://" in line:
ts_id = line[-20:]
if ts_id not in ts_filenames:
print ts_id
ts_filenames.append(ts_id)
try:
ts_segment = urllib.URLopener()
ts_segment.retrieve(line, ts_id)
except:
pass
f = open(ts_id, "rb")
data = f.read(buf)
while (data):
if (s.sendto(data, addr)):
print "sending ..."
data = f.read(buf)
クライアント側
import socket
s = socket.socket()
host = '192.168.67.14'
port = 5000
s.connect((host,port))
print s.recv(1024)
s.close
例外:
Traceback (most recent call last): File "client.py", line 7, in s.connect((host,port)) File "/usr/lib/python2.7/socket.py", line 228, in meth return getattr(self._sock,name)(*args) socket.error: [Errno 111] Connection refused
私はに探していくつかの時間を費やしthis discussionしかし、私はまだ何を修正するか分からない。何か提案してください?クライアント側では、これは間違っている
提案をいただきありがとうございます:接続エラーはなくなり、クライアントインターフェイスでトラフィックをキャプチャできます...しかし、クライアントが実際にトラフィックを受信していることをどのように確認できますか?クライアントには印刷s.recv(1024)がありますが、端末に何も表示されません –
サーバのデータグラムがクライアントに届かないような音がしますか?クライアントの*接続*の後に、 's.getsockname()'の値を表示します。サーバでは、 'recvfrom'が終了した後、' client_addr'の値を出力します。それらは一致する必要があります。もしそうであれば、 'sendto'はそのアドレスのクライアントにデータを送り返すことができます。まだ動作していない場合は、何を助言するべきかわからない:tcpdumpやwiresharkを使って、 "ワイヤ上の"パケットがどんなものか見てみよう。 –