2016-03-21 23 views
5

XDR verilerini alan bir C soketim var. Bir C ve bir Java istemcisi yazdım. xdrlib kullanarak bir Python istemcisi yazmaya çalışıyorum. Python XDR TCP akışı

import xdrlib 

p = xdrlib.Packer() 
p.pack_int(5) 
p.pack_int(4) 
p.pack_int(3) 
data = p.get_buffer() 

i sunucu veri ile bu dekode

farklıdır. Bunun nedeni, verilerin bir xdrmem kod çözücü ile okunacak şekilde kodlanmasıdır. (başlangıç ​​ve bitiş kayıtlarına sahip değiller).

xdr kayıtlarının oluşturulmasını destekleyen python için bir kütüphane olup olmadığını bilen var mı? Bu, xdrrec_create aracılığıyla yapılır ve Java'da buna XdrTcpEncodingStream denir.

+0

Minimum paket uzunluğu, paket bloğu boyutu. Global kullanım için paket modeli oluşturmaya ihtiyacınız var. Her paket bir blok tanımı içeriyordu. Başlık tanımı olmadan iletişim kurma. – dsgdfg

+0

Üzgünüm ... Yorumunuzu tekrar yorumlayabilir misiniz? Açıkladığın şeyi anlamadım ... – Stefano

cevap

-2

Genellikle en çok kullanılan paketin xdrlib olduğunu görüyorum. C veya Java'da gerçekleştirebileceğiniz işlemler olduğunda, bunları c/java'da çalıştırabilir ve Swig tarafından oluşturulan arabirimi kullanarak python'da kullanabilirsiniz. Anlayışım senaryoya uygun değilse bana bildirin.

+0

iyi ... Geçmişte Swig kullanmıştım ama C kütüphanesini kullanırsam xdrrec_create verileri geri almak için farklı geri dönüşler kullanır. Korkarım ki bu python'da haritalamak o kadar kolay olmayacak. Java sürümü etrafında sarılmaya çalışılmadım. İhtiyaçlarıma uygun bir Python modülü bulabilirsem, aksi takdirde tercihim var ki, istemcimi yazmak için java'ya yapışabilirim (ya da Java kütüphanesini python için swig olarak sardım) – Stefano

+0

bir python modülü arıyor. Swig her zaman bir çözümdür ama ne istediğini değil – Cristas