VC socket传输图片

来源:互联网 发布:窥探隐私 知乎 编辑:程序博客网 时间:2024/04/29 23:46
socket绑定监听等相关流程均不做详细解释了,该程序的基础是指客户端和服务器端已经进行监听并且创建了连接。

传输图片流程如下所示:
VC socket传输图片 - 柠檬加冰 - 柠檬加冰的博客
 

客户端代码:

//发送图片预处理指令


//读取图片预处理
     char    buf[1024];
     FILE    *fq;
CFile   file; 
file.Open("1.jpg",CFile::modeRead); 
     int     len,opt = 1;
     memset(buf,0,1024);
     while(1)
     {
           len = file.Read(buf, 1024);
  if(len<=0)
  break;
  m_ClientSocket->Send(buf,len);
     }
UpdateData();
m_listSend.InsertString(-1, "发送图片一张:" + m_strMsg);
m_listSend.SetTopIndex(m_listSend.GetCount() - 1);
     file.Close();


服务器端代码:
if(isImageFile)
{
char szTemp[128];
CFile file;
file.Open(_T("new1.jpg"),CFile::modeCreate|CFile::modeWrite);
int     len=0,opt = 1;
while(1)
{
len = m_ServerSocket->Receive(szTemp, 128);
if(len<=0)
break;
file.SeekToEnd(); //将指针移至文件末尾进行追加
file.Write(szTemp,len);
}
//关闭文件
file.Close();
isImageFile=FALSE;
m_listReceive.InsertString(-1, "收到:图片一张");                        //InsertString函数用于在指定索引添加一行,索引为-1时自动添加到末尾
m_listReceive.SetTopIndex(m_listReceive.GetCount() - 1);        //自动将滚动条滚动到最大索引处。
}
else
{
char szTemp[128];
int n = m_ServerSocket->Receive(szTemp, 128);            //接收客户端发来的信息
szTemp[n] = '\0';
char *cmp="image";
//解析字符串,是否为图片指令,如果是,则进入图片处理流程
if((strncmp("image",szTemp,5))==0)
isImageFile=TRUE;
else
isImageFile=FALSE;
CString strTemp;
strTemp.Format("收到:%s", szTemp);
m_listReceive.InsertString(-1, strTemp);                        //InsertString函数用于在指定索引添加一行,索引为-1时自动添加到末尾
m_listReceive.SetTopIndex(m_listReceive.GetCount() - 1);        //自动将滚动条滚动到最大索引处。
}

亲测已经能用,不能用的请留言
0 0
原创粉丝点击