SOCKEt编程,局域网内,小弟我每次发送500KB行不

SOCKEt编程,局域网内,我每次发送500KB行不?


send()每次发送500KB,我看了send的返回值。也是500KB(换算了一下)!



但是我收到的PDF,MP3等文件,接收后打不开,无效! 



怎么回事?

------解决方案--------------------
肯定是读写文件的时候除了问题。
我前两天还被这个搞得焦头烂额。。。。

需要注意的就是
C/C++ code


// 发送端
ReadFile( hFile, buffer, sizeof(buffer), &dwBytesRead, NULL);
send( client, buffer, dwBytesRead, 0);   //dwBytesRead一定要作为发送的字节数

//接收端
int nRecv = recv( s, buffer, sizeof(buffer), 0 );
WriteFile( hFile, buffer, nRecv, &dwBytesWriten, NULL ); //nRecv一定要作为写文件的字节数

------解决方案--------------------
for(i=0;i<40000;j++,i++) //逗号运算符是以第二个值为整个表达式的值
{
if(j==pDlg->m_FileCliHead.FileLength)
{
break;
}
SubSection[i]=pDlg->m_FileContent[j];

}
//select(0,0,&SendFile_Fd,0,0);

static int Send_byte=send(WirteSock.fd_array[0],(const char*)&SubSection,sizeof(SubSection),0);


每次发送都是4000,但你数组中数据可能没有那么多。这可能会有点问题。
------解决方案--------------------
send完了后判断一下返回值,看看实际发送的数据是不是你想发送的
如果实际发送的少于想发送的,那么在下次获取数据的时候需要特殊处理一下,防止漏发数据
------解决方案--------------------
你的发送没问题,可以发送的,问题出在接收部分