作者MLP2007 (NEW)
看板Programming
标题Re: [问题] winsock的问题
时间Wed Sep 13 13:14:25 2006
※ 引述《[email protected] (风薰 人醉)》之铭言:
: ※ 引述《[email protected] (NEW)》之铭言:
: > 最近用winsock模拟P2P档案传输的功能
: > socket用block模式
: > 发送端开thread
: > 作fread 然後send
: > 接收端也开thread
: > 作recv 然後fwrite
: > 发现recv接收到的packet内容常常是无效的
: > 也就是和发送端丢出的内容不一致
: > 导致程式错误
: > 後来想说在send和recv之前用Sleep来作delay
: > 情况改善很多
: > 但是如果同时传多个档案
: > 有时recv收到的packet还是会发生错误
: > 请问这是什麽缘故?
: 如果是自己要处理 packet 的话,在单一 thread 下要传多个档案
: 你需要自己再包一层,来分别不同的档案
: 如果只是要传档案,可以参考 FTP 来写,除非你有其它的需求
: 可以详述一下你说的无效封包是什麽样的? 长度不合? 编码错误?
我对每一个档案 都开一个thread 用一个个别的socket来传输
无效的封包是表示不是我所预期的格式
例如 传送端
struct Packet pak;
pak.type="%FS%"
pak.size=5000
send(sock ,&pak ...);
接收端
struct Packet pak;
recv(sock ,&pak ...);
pak.type 和 pak.size并不是预期得到的 %FS%, 5000
而是random值
如果有兴趣的话 把e-mail告诉我
我mail source code 给你看看吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.167.185.108
1F:推 Neo1978:pak.type 是指标吗? 61.224.203.155 09/13 15:48
2F:推 ankasc:你送出的指struct的address,而非内容 58.86.128.60 09/13 18:51
3F:→ meltice:pak.type是指标 用字元阵列就可以了吧203.204.133.140 09/13 23:21