2016-05-24 32 views
1

私の質問はsocket.close()関数に関連しています。これをプログラムの中で呼び出すと、新しい接続を開始するためにソケット定義を再記述する必要があります。このコードは、この接続は..すべてのソケット呼び出しの後に出力(結果1、結果2)として "0" を返します しかし、私はこの1つのようなものを必要とし、Pythonソケット:同じソケットで複数の接続を処理する

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
result1 = sock.connect_ex(('127.0.0.1',9001)) 
result2 = sock.connect_ex(('127.0.0.1',8119)) 
sock.close() 

 import socket 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    result1 = sock.connect_ex(('127.0.0.1',9001)) 
    sock.close() 
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    result2 = sock.connect_ex(('127.0.0.1',8119)) 
    sock.close() 

を働いています

この場合、result2の出力はゼロではありません。....どちらの場合でもゼロ出力を得るためにcloseから離れたソケット内に関数がありますか?

Th anks

答えて

0

TCPソケットを使用しているので、接続ごとに1つのソケットが必要です。
これは、新しい接続ごとに新しいソケットを作成する必要があることを意味します(最初の例の場合)。

connectcloseの機能は、使用されている接続でのみ機能します。
複数の接続に複数のconnectcloseコールを使用する必要があります。

例えば:

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
result1 = sock.connect_ex(('127.0.0.1',9001)) 
result2 = sock2.connect_ex(('127.0.0.1',8119)) 
sock.close() 
sock2.close() 
0

いいえ、1つのソケットを2回接続することはできません。なぜあなたが欲しいのかも明らかではありません。最初の例のように2つのソケットを作ります。