本文通過例子,介紹了如何在局域網中進行聊天、互發文件以及抓取對方屏幕保存為文件。程序還包括了取得本機和對方的IP、計算機名稱。滾動ListBox控件等功能。
運行界面如下:
由於此程序可以即時切換狀態,因此需要結束仍處於接受狀態的線程。
//TCP監聽線程
UINT _ListenTcpThread(LPVOID lparam)
{
CMyQQDlg *pDlg=(CMyQQDlg *)lparam;
CSocket sockSrvr;
pDlg->m_Potr=PORT+pDlg->m_server;//保存當前使用端口,用於關閉
int createSucceed=sockSrvr.Create(pDlg->m_Potr);
int listenSucceed=sockSrvr.Listen(); //開始監聽
CSocket recSo;
SOCKADDR_IN client;
int iAddrSize=sizeof(client);
int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR *)&client,&iAddrSize); //接受連接並取得對方IP
sockSrvr.Close();
char flag[FLAG]={0}; //接受標示,用於判斷接受到的是信息,文件等
if(recSo.Receive(flag,FLAG)!=2)
{
return -1;
}
pDlg->m_type=flag[0];
if(pDlg->m_type==D) return 0;//終止此線程
pThreadLisen=::AfxBeginThread(_ListenTcpThread,pDlg);
pDlg->ReceiveFileMsg(recSo,client);
return 0;
}
if(m_nSockType==SOCK_TCP)
{
DWORD dwStatus;