解決ftp put 函式0位元組問題

2021-06-09 05:43:23 字數 845 閱讀 1947

今天修改原有的上傳程式,因為新增了一台伺服器,需要將上傳到web伺服器上之後,在ftp到伺服器,ftp程式很早前就寫過,還是比較簡單的,就是要注意一下服務是主動模式還是被動模式。

自己修改好程式後,上傳卻出現檔案已經建立,但是大小為0位元組(

用ftp軟體卻沒有問題

,仔細想想許可權應該是沒有問題的,遂換一台伺服器的ftp服務試了試**,在這台伺服器上**成功執行,那剩下的就是這台新伺服器配置有問題。

首先在這裡回顧一下ftp協議,ftp協議時基於tcp協議的,首先需要三次握手然後建立連線,但是這時候建立的連線並不能傳輸資料,他只能傳輸命令。因此在建立連線後,還要建立一條資料傳輸連線,這個資料連線分為兩種型別,主動(post)模式和被動(passive)模式,主動模式採用固定的20埠與客戶端聯絡,而被動模式是在1024埠之後隨機分配,那這樣就意味著,用被動模式連線ftp的時候,iptables是否允許這個隨機的埠,考慮到這裡,可以肯定的是,肯定是防火牆的問題。

我用linux的ftp命令連線新的伺服器,連線成功,用ls命令檢視當前目錄,遂報錯 ftp: connect: no route to host,在網上搜了一下,有很多答案,看來猜測的沒有錯,就是需要修改一下防火牆的配置檔案,找到iptables-config檔案,然後將其中的 

iptables_modules 選項的值改為以下:

iptables_modules="ip_nat_ftp ip_conntrack_ftp"

然後重啟iptables服務:

/etc/init.d/iptables restart

然後再試試吧,應該就沒有問題了~~~

malloc函式申請0位元組的問題

無意中看到這個問題。malloc函式若申請0位元組,它返回的將會是什麼?會不會仍然是null?在c語言深度剖析上看到這樣的解釋 申請0位元組的記憶體,函式並不返回null,而是返回乙個正常的記憶體位址。但是你卻無法使用這塊大小為0的記憶體,將此比喻成尺子上的某個刻度,說刻度本身並沒有長度,只有某兩個...

TCP UDP 傳送 接收0位元組問題

再論 tcp udp 傳送 接收 0位元組問題 傳送時tcp建立連線時,3次握手的每個報文都是 data區為0 位元組,所以說傳送 0位元組沒有問題。建立連線後,再傳送 0位元組大小也沒有問題 api send 傳送後返回值為發包的大小 udp可以傳送 0位元組大小報文。api sendto,傳送後...

再論Tcp Udp 傳送 接收 0位元組問題

再論 tcp udp 傳送 接收 0位元組問題 傳送時tcp 建立連線時,3次握手的每個報文都是 data區為0 位元組,所以說傳送 0位元組沒有問題。建立連線後,再傳送 0位元組大小也沒有問題 api send 傳送後返回值為發包的大小 udp可以傳送 0位元組大小報文。api sendto,傳送...