0

私はPythonでクライアントを作ろうとしています。私はオブジェクトを送受信するためにマルチプロセッシングを使用しようとしています。Python 2.7:何もしないマルチプロセッシング

Iメッセージ(入力何も他のクライアントによって送信されたメッセージを表示するようになっていない)を送信するためにこれを使用します。

if __name__ == "__main__": 
    while True: 
    wait = 'yes' 
    message = raw_input('Enter message into chat (enter nothing to refresh chat): ') 
    if message == '': 
     wait = 'no' 
     continue 
    sock.sendall(message) 

をそして、私は、メッセージ送受信するためにこれを使用します。

def listen(): 
    global wait 
    while True: 
     data = sock.recv(255) 
     while True: 
      if wait == 'yes': 
       continue 
      print data 
      break 

を私は使用これは聞き取るために働く:

q = multiprocessing.Process(target=listen) 
q.start() 

何かがないか、私は何かしていますかg間違っている。助けてください!

+0

「靴下」とは何ですか?あなたのプロセスがお互いにコミュニケーションチャネル*を持っているようには聞こえません。彼らはソケットの同じ端にあるかのように聞こえるか、無関係のソケットを持つかもしれません。何が起こっているのかを伝えるには[mcve]が必要です。 – user2357112

答えて

0

少なくとも、通信できるように接続の両端が必要です。あなたが1つのソケットを持っているように見えます。何にも接続されていないことは明らかです(あなたはソケット設定コードを省略したので、言うことは難しいです)。

接続された2つのソケットを取得するためにソケットペアを()を使用して試してみてください。そして、「リスニング」プロセス(またはその逆にメインプロセスでclientserverを使用

import socket 
client, server = socket.socketpair() 

を、それは本当に問題ではありません)。 2つのソケットが接続され、1つを使用して送信すると、他のにデータが送信されます。

+0

私はPythonのドキュメントをチェックしましたが、これはUnix上でしか利用できないと言っていました。マルチプラットフォームのプログラムを作りたいと思ったら、これをWindowsと互換性を持たせるためにどのように変更するのですか?どうもありがとう! – BooHoo

+0

Windows Pythonに 'socketpair'がないのは馬鹿です。幸いにも、誰かがサードパーティ製のライブラリにパッケージしました:https://pypi.python.org/pypi/backports.socketpair –

関連する問題