主题:[原创]socket实现文件传输问题
南国飞雪
[专家分:0] 发布于 2011-07-27 11:19:00
我完成的是用socket多线程实现文件传输,客户端在服务器,服务器端在windows线。服务器端先发送文件大小,然后发送文件内容,发送文件大小的数组strdata大小为10个字符,每次发送文件大小的缓存buf大小为512字符,客户端接受文件的缓存datastr大小为30个字节,每次接受文件内容的缓存ch为1024字节;现在发送大小为10字节的文件,接收端发现接收的文件大小为20字节,不懂为什么,请教大侠指点?当我第二次重新传输刚才传送的文件时惊奇的发现接收文件大小的缓存里出现了文件内容,让我十分不解,这个问题困扰了很久,不懂为啥?请懂网络编程的大侠指教一下,不胜感激涕零,感激涕零!!!详细代码已上传!
回复列表 (共1个回复)
沙发
argentmoon [专家分:13260] 发布于 2011-07-28 16:36:00
抱歉你的代码太长了,只粗看了你的服务端代码,发现了点问题
typedef struct lpstruct
{
char *file;
int socket;
} information;
你定义的这个结构体,
file指针指向了本函数里的一个变量,(这个方法我暂时也说不清楚行不行,感觉是不妥的)
然后创建进程传递一个information变量过去(这个information变量也只是一个临时变量),而你只依靠sleep来保证安全,这种方法是不可取的
万一你的sleep结束,而线程才开始呢,information变量就可能被释放。
我来回复