Re: [CN]請問助教HW2

作者: gary04n (04N)   2012-05-18 19:44:36
※ 引述《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來處理

Links booklink

Contact Us: admin [ a t ] ucptt.com