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