📄 msg1dlg.cpp
字号:
*pResult = 0;
}
UINT TcpAcceptThread(LPVOID param)
{
SOCKET sock =*(SOCKET*)param;
char buf[MAXBUF];
int recvcnt=recv(sock,buf,3,0);
if(recvcnt<=0)return 1;
if(buf[0]=='L' && buf[1]=='S' && buf[2]=='T')//传文件列表
{
Search("e:");
CFile lfile;
if(lfile.Open(LISTFILEPATH,CFile::modeRead |CFile::shareDenyNone)==false)return 1;
int len=lfile.GetLength();
int fileoffset=0;
while(fileoffset<len)
{
//AfxMessageBox("d");
lfile.Seek(fileoffset,CFile::begin);
int readlen=lfile.Read(buf,1024*8);
if(readlen==0)break;
int sendlen=send(sock,buf,readlen,0);
if( sendlen<0)break;
fileoffset+=sendlen;
}
lfile.Close();
}
else if(buf[0]=='T' && buf[1]=='T' && buf[2]=='F')//传临时文件
{
int revcnt=recv(sock,buf,MAXBUF,0);
buf[revcnt]='\0';
//AfxMessageBox(buf);
CFile tfile;
if(tfile.Open(buf, CFile::modeRead |CFile::shareDenyNone)==false)
{
AfxMessageBox("openserverfile");
return 0;
}
int len=tfile.GetLength();
int fileoffset=0;
while(fileoffset<len)
{
//AfxMessageBox("d");
tfile.Seek(fileoffset,CFile::begin);
int readlen=tfile.Read(buf,1024*8);
if(readlen==0)break;
int sendlen=send(sock,buf,readlen,0);
if( sendlen<0)break;
fileoffset+=sendlen;
}
tfile.Close();
}
else if(buf[0]=='1' && buf[1]==':')//和飞鸽传文件
{
int revcnt=recv(sock,buf,MAXBUF,0);
CFile tfile;
if(tfile.Open(transfilename, CFile::modeRead |CFile::shareDenyNone)==false)
{
AfxMessageBox("openserverfile");
return 0;
}
int len=tfile.GetLength();
int fileoffset=0;
while(fileoffset<len)
{
//AfxMessageBox("d");
tfile.Seek(fileoffset,CFile::begin);
int readlen=tfile.Read(buf,1024*8);
if(readlen==0)break;
int sendlen=send(sock,buf,readlen,0);
if( sendlen<0)break;
fileoffset+=sendlen;
}
tfile.Close();
}
closesocket(sock);
return 0;
}
UINT TcpListenThread(LPVOID param)
{
SOCKET socklisten=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in sin;
sin.sin_addr.s_addr=0;
sin.sin_family=AF_INET;
sin.sin_port=htons(2425);
if(bind(socklisten,(sockaddr*)&sin,sizeof(sockaddr))==SOCKET_ERROR)
{
closesocket(socklisten);
AfxMessageBox("tcp bind error");
return 1;
}
listen(socklisten,5);
int len=sizeof(sockaddr);
while(1)
{
SOCKET sock;
sock=accept(socklisten,(sockaddr*)&sin,&len);
AfxBeginThread(TcpAcceptThread,&sock);
}
}
UINT TcpGetListThread(LPVOID param)
{
CString szip((char*)param);
//AfxMessageBox(szip);
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(2425);
sin.sin_addr.s_addr=inet_addr(szip.GetBuffer());
char buf[MAXBUF];
if(connect(sock,(sockaddr*)&sin,sizeof(sockaddr))==SOCKET_ERROR)
AfxMessageBox("connect list");
else
{
CFile lfile;
if(lfile.Open("c:\\list.txt",CFile::modeWrite |CFile::modeCreate)==false)
{
closesocket(sock);
return 1;
}
strcpy(buf,"LST");
send(sock,buf,strlen(buf),0);
int i=0;
pDlg->m_musiclist.DeleteAllItems();
while(1)
{
int revcnt=recv(sock,buf,MAXBUF,0);
if(revcnt<=0)break;
lfile.Write(buf,revcnt);
}
lfile.Close();
FILE *file;
file=fopen("c:\\list.txt","r");
if(file==NULL){AfxMessageBox("FILE");return 0;}
i=0;
while(fgets(buf,MAXBUF,file))
{
int len=strlen(buf);
while(buf[len-1]=='\r' || buf[len-1]=='\n')
{
len--;
buf[len]='\0';
}
pDlg->m_musiclist.InsertItem(i,buf,0);
i++;
}
fclose(file);
}
closesocket(sock);
return 0;
}
DWORD WINAPI TcpGetFileThread(LPVOID param)
{
CString filename((char*)param);
//AfxMessageBox(szip);
SOCKET sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in sin;
//AfxMessageBox(tmpip);
sin.sin_family=AF_INET;
sin.sin_port=htons(2425);
sin.sin_addr.s_addr=inet_addr(tmpip.GetBuffer());
char buf[MAXBUF];
if(connect(sock,(sockaddr*)&sin,sizeof(sockaddr))==SOCKET_ERROR)
AfxMessageBox("connect ttf");
else
{
strcpy(buf,"TTF");
send(sock,buf,strlen(buf),0);
send(sock,filename.GetBuffer(),filename.GetLength(),0);
char temppath[256];
pathtotemppath(filename.GetBuffer(),temppath);
if(ifdownload)strcpy(temppath,downloadpath);
CFile tmp;
if(tmp.Open(temppath,CFile::modeReadWrite | CFile::modeCreate |CFile::shareDenyNone)==false)
{
AfxMessageBox("opentmpfile");
return 1;
}
while(1)
{
int revcnt=recv(sock,buf,MAXBUF,0);
if(revcnt==0)break;
if(revcnt==-1)AfxMessageBox("cfft");
tmp.Write(buf,revcnt);
}
tmp.Close();
}
//Sleep(5000);
return 0;
}
void Cmsg1Dlg::OnNMDblclkList3(NMHDR *pNMHDR, LRESULT *pResult)//双击播放
{
// TODO: 在此添加控件通知处理程序代码
NMLISTVIEW* pListView = (NMLISTVIEW*)pNMHDR;
int iSel = pListView->iItem;
if(iSel == -1)
return;
CString filename = m_musiclist.GetItemText(iSel, 0);
int len=filename.GetLength();
if(filename[len-3]=='m' && filename[len-2]=='p' && filename[len-1]=='3')
;
else
return ;
MCIWndClose(PLAYHWND);
MCIWndDestroy(PLAYHWND);
char temppath[256];
pathtotemppath(filename.GetBuffer(),temppath);
CFileFind ff;
bool res=ff.FindFile(temppath);
if(!res)
{
//AfxMessageBox("get");
//HANDLE h=AfxBeginThread(TcpGetFileThread,(LPVOID*)filename.GetBuffer());
DWORD threadid;
ifdownload=false;
HANDLE h=CreateThread(NULL,0,TcpGetFileThread,(LPVOID*)filename.GetBuffer(),0,&threadid);
WaitForSingleObject(h,1000000);
}
PLAYHWND=MCIWndCreate(pDlg->GetSafeHwnd(),AfxGetInstanceHandle(),0,temppath);
MCIWndPlay(PLAYHWND);
*pResult = 0;
}
void Cmsg1Dlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
ShowWindow(SW_HIDE);
CDialog::OnClose();
}
void Cmsg1Dlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
}
void Cmsg1Dlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代
OnCancel();
}
LRESULT Cmsg1Dlg::dealmsg(WPARAM wparam,LPARAM lparam)//托盘图标
{
UINT shijian=(UINT)lparam;
switch(shijian)
{
case WM_LBUTTONDBLCLK: ShowWindow(SW_SHOWNORMAL);
break;
case WM_RBUTTONDOWN:
{
CPoint pt;
GetCursorPos(&pt);
//pMenu->DestroyMenu(); pMenu->CreatePopupMenu();
pMenu->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this,0);
break;
}
default:
break;
}
return 0;
};
void Cmsg1Dlg::OnWo3()
{
// TODO: 在此添加命令处理程序代码
OnCancel();
}
void Cmsg1Dlg::OnNMRclickList1(NMHDR *pNMHDR, LRESULT *pResult)//好友列表的右键
{
// TODO: 在此添加控件通知处理程序代码
CPoint pt;
GetCursorPos(&pt);
//pMenu->DestroyMenu(); pMenu->CreatePopupMenu();
pfriendMenu->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this,0);
*pResult = 0;
}
void Cmsg1Dlg::OnNMRclickList3(NMHDR *pNMHDR, LRESULT *pResult)//音乐列表的右键
{
// TODO: 在此添加控件通知处理程序代码
CPoint pt;
GetCursorPos(&pt);
//pMenu->DestroyMenu(); pMenu->CreatePopupMenu();
NMLISTVIEW* pListView = (NMLISTVIEW*)pNMHDR;
imusicSel = pListView->iItem;
if(imusicSel == -1)
return;
pmusicMenu->TrackPopupMenu(TPM_LEFTALIGN,pt.x,pt.y,this,0);
*pResult = 0;
}
void Cmsg1Dlg::OnWoDownload()//音乐列表的下载
{
// TODO: 在此添加命令处理程序代码
CString strFileName = m_musiclist.GetItemText(imusicSel, 0);
CFileDialog dlg(FALSE, NULL, strFileName.GetBuffer(0), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "All Files(*.*)|*.*||", this);
if(dlg.DoModal() != IDOK)
return;
CString strClientPath = dlg.GetPathName();
strcpy(downloadpath,strClientPath.GetBuffer());
DWORD threadid;
ifdownload=true;
HANDLE h=CreateThread(NULL,0,TcpGetFileThread,(LPVOID*)strFileName.GetBuffer(),0,&threadid);
}
void Cmsg1Dlg::Ontransfile()//好有列表的传文件
{
// TODO: 在此添加命令处理程序代码
char bufm[MAXBUF],buf[MAXBUF];
POSITION pos=m_a.GetFirstSelectedItemPosition();
int cur=m_a.GetNextSelectedItem(pos);
CString szip=m_a.GetItemText(cur,2);
//AfxMessageBox(szip);
//tmpip=sip;
//AfxMessageBox(tmpip);
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "All Files(*.*)|*.*||", this);
if(dlg.DoModal() != IDOK)
return;
CString strServerPath = dlg.GetPathName();
CFile file;
file.Open(strServerPath,CFile::modeRead );
transfilesize=file.GetLength();
strcpy(transfilename,file.GetFileName());
file.Close();
sprintf(bufm,"0:%s:%x:464ae77a:1:",transfilename,transfilesize);
int lenm=strlen(bufm);
buf[0]='\0';
int i;
for(i=0;i<lenm;i++)
buf[i+1]=bufm[i];
SendPack(2097952,buf,szip.GetBuffer(),lenm+1);
}
void Cmsg1Dlg::OnSetting()
{
// TODO: 在此添加命令处理程序代码
setting dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -