2017-01-05 31 views
0

"/tmp/.mysocket"にバインドされたローカルソケットを作成し、そのソケットからデータを受信するのを待つC++プログラムがあります。それが設定されているようにして、生のバイナリデータをソケットに送信し、次のCにロードされる++構造:ローカルファイルソケットを使用したPythonとC++間のプロセス間通信?

struct StateVariable 
{ 
    char Name[64]; 
    int E[8]; 
}; 

C++プログラムのrecvfromを使用して入力をリッスン:

int nBytes = recvfrom(SD,&DataReceived,sizeof(StateVariable)/sizeof(char),0,(sockaddr*)&SentFrom,&size); 

サーバであります標準のAF_UNIXとSOCK_DGRAMを使ってソケットを作成するだけです。

私の質問はPythonに関するものです:どのように/ tmp/myysocketにバインドされたローカルソケットにpythonを使ってデータを送信するのですか?私はAF_INETを使用していないか、または特定のポートを開いていません。

私はpythonのソケットライブラリを使用してソケットを記述することができますが、pythonでファイルにソケットをバインドし、そのソケットにデータを送信することについて説明するリソースは見つかりません。ソケットライブラリのドキュメントでは、ポート番号127.0.0.1にバインドされたローカルソケットに対してAF_INETとSOCK_DGRAMを使用する方法についてのみ説明していますが、私はそれをしていません。

ファイルにバインドされたソケットにデータを送信するにはどうすればよいですか?ちょうどそれを行うpythonプログラムの例がありますか(多分この機能を示すクライアントとサーバーのペア)ですか?限り、私はPythonのローカルファイルソケットにデータを送信することができます、私は残りの部分を把握することができます。

+0

リモートプロシージャコールメカニズムが10000回プログラムされました。既に存在する方法のためのGoogle。 –

答えて

2

ライブラリPython socketライブラリは、C++でよく知られているソケットインターフェイスの周りにかなり薄いラッパーです。 socket documentationを参照してください。

このような何かを探すようになるだろう:

import socket 
import struct 

s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM) 
s.connect('/tmp/...') 
s.send(struct.pack('64s8i', ...)) 
0

をあなただけAF_UNIXAF_INETを変更して.connect(address)および/または.bind(address)方法は、(代わりに(host, port)ペアの)ファイルへのパスを受け入れます。それ以外のものはすべて同じように動作します。

関連する問題