tr-demoscene

the scene => coding => pc => Konuyu başlatan: endo - 04.08.2010 12:16:16

Başlık: Network'ten dosya göndermek
Gönderen: endo - 04.08.2010 12:16:16
Selamlar, malumunuz network üzerinden dosya göndermek her daim problemlidir, uğraştırır, çeşitli libraryler vardır, kendiniz yazarsınız vs.
Windows için aşağıdaki şu API çok kullanışlı, ihtiyaç duyan olur kesin diye yazayım dedim: (win2k ve sonrasında destekleniyor)

http://msdn.microsoft.com/en-us/library/ms740565.aspx

BOOL TransmitFile(
    SOCKET hSocket,
    HANDLE hFile,
    DWORD nNumberOfBytesToWrite,
    DWORD nNumberOfBytesPerSend,
    LPOVERLAPPED lpOverlapped,
    LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
    DWORD dwFlags
);

socket ve file handle'larını verip dosyayı gönderebiliyorsunuz. Async de çalışabiliyor.
Linuxteki SendFile gibi. (http://tautology.org/software/man/sendfile)
Başlık: Network'ten dosya göndermek
Gönderen: skate - 04.08.2010 13:48:04
ama filesize'ı DWORD olarak kullanırsak, unsigned da olmadığı durumda ben bu fonksiyonla 2 GB'dan büyük dosyaları filesystem desteklese bile gönderemem ki. oldu mu şimdi? öngürüsüzlük işte noolcek. :p
Başlık: Network'ten dosya göndermek
Gönderen: ssg - 05.08.2010 15:51:56
suna dikkat etmek lazim:

Alıntı
Workstation and client versions of Windows optimize the TransmitFile function for minimum memory and resource utilization by limiting the number of concurrent TransmitFile operations allowed on the system to a maximum of two. On Windows Vista, Windows XP, Windows 2000 Professional, and Windows NT Workstation 3.51 and later only two outstanding TransmitFile requests are handled simultaneously; the third request will wait until one of the previous requests is completed.
Başlık: Network'ten dosya göndermek
Gönderen: endo - 05.08.2010 15:56:29
haklisin ssg, bi yonden de bu iyi bi ozellik olabilir, yani 10 dosya birden gondermeye calisinca kendimiz bi queue yapmak zorunda kalmayiz ve bantin tumunu iki dosya icin kullanmis oluruz.
dikkat edilmesi gereken iyi bi ozellik :)