哪里有socket传送文本文件的实例或代码? 本人想把一个文本文件分字节发送给对方,怎么来? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 see this,can help you:http://www.vckbase.com/document/viewdoc.asp?id=321 void CCNetProgDlg::OnSendfile() { // TODO: Add your control notification handler code here long len; CSocket sk; CFile f; f.Open ("c:\\recv.bmp",CFile::modeRead,0); len=f.GetLength (); char *readbuf=new char[len]; // f.Open (m_strFileName,CFile::modeRead,0); long a=f.ReadHuge (readbuf,len); sk.Create (); if(!sk.Connect ("172.16.8.221",9000)) { MessageBox("不能发送文件","连接失败",MB_OK); sk.Close (); return; } long res=sk.Send (readbuf,a,0);/* int times=len/5000; int sended =0; while(sended<=len) { int r=sk.Send (&(readbuf[sended]),5000); sended+=r; //break; }*/ f.Close (); sk.Close (); delete readbuf; UpdateData(FALSE); }UINT ListenThread(LPVOID lparam){ CSocket sk,skrecv; sk.Create(9000); sk.Listen (); char strRec[20001]; char read[4000]; static long al=0; while(sk.Accept (skrecv)) { char *pBuf=strRec; while(1) { memset(read,0,sizeof(read)); int num=skrecv.Receive(read,4000,0); if(num==SOCKET_ERROR) { //出错了,加入你的处理 MessageBox(NULL,"接收出错啦","错误",MB_OK); break; } else { if(num>0) { //这段代码的计算也许有错,如果错了,就把指针再加1来试试吧 //memcpy(pBuf,read,num); // pBuf+=num; if(a==1) { DeleteFile("E:\\recv.bmp"); a++; } CFile f; f.Open("E:\\recv.bmp",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::typeBinary);// f.SeekToEnd (); f.Write(read,num); //f.Write ("\r\n",2); f.Close (); } else if(num==0) { //接收完毕,加入你的处理 break; } else { //出错了,加入你的处理 MessageBox(NULL,"接收出错啦2","错误",MB_OK); break; } } }//while(1) skrecv.Close (); } return 0;} 在CTree Control里添加的复选框,想把某个节点前的框变灰色和不可勾选,怎么办啊? 如何用VC++基于对话框中的slider控件来控制声音 路径问题 VC中如何在按钮上加图片 请问在SDK中多文档窗口的工具条怎么处理,在线等 如何让view中的垂直线条随着时间的变化而向右动态的移动? 谁有Geotiff格式的详细标准,或与其它类型文件的转换程序,或相应的geotiff文件下载链接? vc++调用AfxBeginThread 内存增长 迅猛 直至软件报错 看什么书比较好一些? 怎样得到别人进程开始地址和结束地址 汉字和ASCII码如何相互转换?高手请入。 对文件的剪切是怎么实现的?
http://www.vckbase.com/document/viewdoc.asp?id=321
void CCNetProgDlg::OnSendfile()
{
// TODO: Add your control notification handler code here
long len;
CSocket sk;
CFile f;
f.Open ("c:\\recv.bmp",CFile::modeRead,0);
len=f.GetLength ();
char *readbuf=new char[len];
// f.Open (m_strFileName,CFile::modeRead,0);
long a=f.ReadHuge (readbuf,len);
sk.Create ();
if(!sk.Connect ("172.16.8.221",9000))
{
MessageBox("不能发送文件","连接失败",MB_OK);
sk.Close ();
return;
}
long res=sk.Send (readbuf,a,0);
/* int times=len/5000;
int sended =0;
while(sended<=len)
{
int r=sk.Send (&(readbuf[sended]),5000);
sended+=r;
//break;
}*/
f.Close ();
sk.Close ();
delete readbuf;
UpdateData(FALSE);
}
UINT ListenThread(LPVOID lparam)
{
CSocket sk,skrecv;
sk.Create(9000);
sk.Listen ();
char strRec[20001];
char read[4000];
static long al=0;
while(sk.Accept (skrecv))
{
char *pBuf=strRec;
while(1)
{
memset(read,0,sizeof(read));
int num=skrecv.Receive(read,4000,0);
if(num==SOCKET_ERROR)
{
//出错了,加入你的处理
MessageBox(NULL,"接收出错啦","错误",MB_OK);
break;
}
else
{
if(num>0)
{
//这段代码的计算也许有错,如果错了,就把指针再加1来试试吧
//memcpy(pBuf,read,num);
// pBuf+=num;
if(a==1)
{
DeleteFile("E:\\recv.bmp");
a++;
}
CFile f;
f.Open("E:\\recv.bmp",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite|CFile::typeBinary);//
f.SeekToEnd ();
f.Write(read,num);
//f.Write ("\r\n",2);
f.Close ();
}
else if(num==0)
{ //接收完毕,加入你的处理
break;
}
else
{
//出错了,加入你的处理
MessageBox(NULL,"接收出错啦2","错误",MB_OK);
break;
}
}
}//while(1)
skrecv.Close ();
} return 0;
}