2016-03-20 21 views
0

Soketten dosya tanıtıcı değeri socket.fileno() ile alınabilir. Ancak, o tam sayıya yazamazsınız.Dosya tanıtıcısı ile hem doğrudan hem de soket ve dosyalardan doğrudan doğruya okunabilir ve okunabilir mi?

Dosyalarla aynı şey open() ile açıldı.

c ve C++ ile, dosya tanıtıcı okuma ve yazma ile kullanılabilen bir tamsayıdır.

Bunun etrafında zaten var mı?

düzenleme: yapmam Ne zaman:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(("google.com", 80)) 
os.write(s.fileno(), "foo") 
os.read(s.fileno(), 100) 

Sadece sonsuza kapatır. Edit2: Çalışıyorum.

+0

Bunu neden yapmak istiyorsunuz? Sıradan yöntemlerini kullanarak nesneleri okuyabilir ve yazabilirsiniz. – BrenBarn

+0

Peki, C stdlib işlevlerini 'ctypes' kullanarak kullanabilirsiniz. –

+0

Gerçek bir HTTP isteği göndermeyi deneyin, ör. 'GET/HTTP/1.0 \ r \ n \ r \ n' – mhawke

cevap

1

os.read() ve os.write() kullanarak dosya tanıtıcıları ile okuyabilir/yazabilirsiniz.

+0

... soketin dosya sistemi API'sı tarafından tanınmadığı Windows dışında. – tdelaney

+0

@mhawke Ana mesajdaki sorumu genişlettim. – Fluffy

İlgili konular