看板 PangSir 關於我們 聯絡資訊
※ 引述《e23149 (traceless feather)》之銘言: : 助教您好!! : 我們發現都用同一個socket傳送request及data時, : 只有直接put且非file already exist : 的情況下client端的mysendto會一直error(也就是完全送不出資料,非10%問題) : 之外,所有的情況都正確。 照理說應該是不會有這種情形 : (順便問一下,若最後實作只用一個socket來傳送request和data,這樣算對嗎??) client可以只開一個socket來傳所有的封包 : 然而,當開了兩個socket : (原本的socket用struct sockaddr_in client接收request, : 另外的socket用client填入mysendto()及recvfrom()第5個參數 用來傳送data) mysendto()才需要傳入address info,recvfrom是要放一個address進去給他填寫 傳送過來的封包的address info : 則必須先get一個file not found的檔案之後,才能順利正確get和put。 : 但是若先get file not found-> get 一個存在的檔案-> put 就會失敗(server端 : 接收不到request) : 想請問是不是server端新建的socket(沒有bind)和client端連接方式有錯? : (但他似乎又有連接 因為get error一次之後就又可以正常使用) 一般來說client開了socket A傳request給server的socket B(bind port XX), server收到request後,開一個新的socket C(不用bind),用剛剛recvfrom得到的 address info來餵進去,傳response回去給socket A,之後的溝通都是由socket A 和socket C來處理 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.28.104