青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

網(wǎng)絡(luò)軟件開(kāi)發(fā)

網(wǎng)絡(luò)軟件開(kāi)發(fā),vc ++ 、linux 、asp、sql server 2000 android、iOS

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  5 隨筆 :: 1 文章 :: 45 評(píng)論 :: 0 Trackbacks

Socket編程在大多數(shù)的編程語(yǔ)言中都是一件比較有趣的事情。它是比較常用的編寫(xiě)通過(guò)網(wǎng)絡(luò)通信的服務(wù)器和客戶(hù)端方法。在windows平臺(tái)Socket通信大多是基于MS Winsock設(shè)計(jì)的。Windows支持基于TCP和UDP的socket通信。Windows APIs在socket編程中是非常有用的,但是有些人發(fā)現(xiàn)在用它們工作的時(shí)候有困難。
所以在這里我介紹一種最簡(jiǎn)單用MFC socket類(lèi)進(jìn)行socket編程的方法。這不僅可以使你的工作變得簡(jiǎn)單而且能減少你在網(wǎng)絡(luò)程序上的開(kāi)發(fā)時(shí)間。你可以定制一個(gè)socket類(lèi),然后你可以在你的其他的網(wǎng)絡(luò)應(yīng)用程序中重用。
在socket編程中,MFC提供了兩個(gè)基本的類(lèi),分別是CAsyncSocket和Csocket。Csocket是從CAsyncSocket繼承來(lái)的。我們可以建立定制的socket類(lèi),也是從CasyncSocket繼承而來(lái)的,當(dāng)然也是為了我們程序特殊的需要。
初始化socket
首先需要調(diào)用AfxSocketInit()函數(shù)來(lái)初始化我們的socket環(huán)境。
為了初始化sockets,我們需要調(diào)用AfxSocketInit()函數(shù)。它通常是在MFC中的InitInstance()函數(shù)中被調(diào)用的。如果我們用程序向?qū)?lái)創(chuàng)建socket程序的話(huà),查看“use Windows Sockets”這個(gè)選項(xiàng),然后選中它。它將會(huì)自動(dòng)的為我們創(chuàng)建這個(gè)步驟了。(如果我們沒(méi)有選中這個(gè)選項(xiàng)的話(huà),我們也可以手動(dòng)添加這些代碼的。)這個(gè)函數(shù)的返回值顯示這個(gè)函數(shù)的調(diào)用成功或失敗。
BOOL CServerApp::InitInstance()
{....
if( AfxSocketInit() == FALSE)
  {
  AfxMessageBox("Sockets Could Not Be Initialized");
  return FALSE;
  }
  ...
}
創(chuàng)建Server Sockets
為了創(chuàng)建一個(gè)Server Socket,我們需要聲明一個(gè)CAyncSocket的變量或者我們自己定制的一個(gè)從AyncSocket或是Cscket繼承來(lái)的類(lèi)的類(lèi)型的變量。然后調(diào)用Create()函數(shù),同時(shí)指定監(jiān)聽(tīng)的端口。這個(gè)函數(shù)的返回值顯示這個(gè)函數(shù)的調(diào)用成功或失敗。
UpdateData(TRUE);
m_sListener.Create(m_port);
if(m_sListener.Listen()==FALSE)
{
AfxMessageBox("Unable to Listen on that port,please try another port");
m_sListener.Close();
return;
}
創(chuàng)建Client Sockets
為了創(chuàng)建Client socket類(lèi),我們需要聲明一個(gè)CAyncSocket的變量或者我們自己定制的一個(gè)從AyncSocket或是Cscket繼承來(lái)的類(lèi)的類(lèi)型的變量。然后調(diào)用Create()函數(shù),同時(shí)指定監(jiān)聽(tīng)的端口。這個(gè)函數(shù)的返回值顯示這個(gè)函數(shù)的調(diào)用成功或失敗。
m_sConnected.Create();
m_sConnected.Connect("server ip",port);
監(jiān)聽(tīng)客戶(hù)端的連接
創(chuàng)建了server socket以后,我們要進(jìn)行監(jiān)聽(tīng)。調(diào)用Listen()函數(shù)。這個(gè)函數(shù)的返回值顯示這個(gè)函數(shù)的調(diào)用成功或失敗。
if( m_sListener.Listen()== FALSE)
{
AfxMessageBox("Unable to Listen on that port,please try another port");
m_sListener.Close();
return;
}
接受連接
連接請(qǐng)求要被接受accept,是用另外的socket,不是正在監(jiān)聽(tīng)的socket。請(qǐng)參看代碼。
void CXXXDlg::OnAccept()
{
 CString strIP;
 UINT port;
 if(m_sListener.Accept(m_sConnected))
 {
  m_sConnected.GetSockName(strIP,port); //應(yīng)該是GetPeerName,獲取對(duì)方的IP和port
  m_status="Client Connected,IP :"+ strIP;
  m_sConnected.Send("Connected To Server",strlen("Connected To  Server"));     
UpdateData(FALSE);
 }
 else
 {
 AfxMessageBox("Cannoot Accept Connection");
 }
}
發(fā)送數(shù)據(jù)
數(shù)據(jù)放在一個(gè)buffer中或是結(jié)構(gòu)體中,調(diào)用send()函數(shù)發(fā)送。
m_sConnected.Send(pBuf,iLen);
接受數(shù)據(jù)
調(diào)用receive()接受數(shù)據(jù)。
void CXXXrDlg::OnReceive()
{
char *pBuf =new char [1025];
CString strData;
int iLen;
iLen=m_sConnected.Receive(pBuf,1024);   
if(iLen == SOCKET_ERROR)     
  {
  AfxMessageBox("Could not Recieve");     
  }     
else    
  {
  pBuf[iLen]=NULL;
  strData=pBuf;
  m_recieveddata.Insert(m_recieveddata.GetLength(),strData);
 //display in server             
 UpdateData(FALSE);
 m_sConnected.Send(pBuf,iLen);  //send the data back to the Client    
 delete pBuf;         
  }
}
關(guān)閉連接
m_sConnected.ShutDown(0);    停止發(fā)送數(shù)據(jù)
m_sConnected.ShutDown(1);    停止接受數(shù)據(jù)
m_sConnected.ShutDown(2);    停止發(fā)送接受數(shù)據(jù)
m_sConnected.Close();
編寫(xiě)自己的socket類(lèi)
在class view中選擇添加一個(gè)新類(lèi),設(shè)置它的基類(lèi)為CAsyncSocket,在類(lèi)向?qū)У膸椭绿砑尤缦碌囊恍┖瘮?shù)。
class MySocket : public CAsyncSocket
{ // Attributes
public:
 // Operations
public:
MySocket();
virtual ~MySocket();
// Overrides
public:
void SetParentDlg(CDialog *pDlg);// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(MySocket)
public:
virtual void OnAccept(int nErrorCode);
virtual void OnClose(int nErrorCode);
virtual void OnConnect(int nErrorCode);
virtual void OnOutOfBandData(int nErrorCode);
virtual void OnReceive(int nErrorCode);
virtual void OnSend(int nErrorCode);
//}}AFX_VIRTUAL // Generated message map functions
//{{AFX_MSG(MySocket)
// NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG
protected:
private:
CDialog * m_pDlg;
};
設(shè)置“Parent Dialog”
調(diào)用這個(gè)socket類(lèi)的SetParentDlg函數(shù),保證當(dāng)socket事件發(fā)生的時(shí)候這個(gè)窗體能接收到。
m_sListener.SetParentDlg(this);
m_sConnected.SetParentDlg(this);
建立Socket 事件和窗體成員函數(shù)之間的聯(lián)系
在這個(gè)窗體類(lèi)中添加一些函數(shù),比如void OnReceive(); void OnClose(); void OnAccept(); void OnConnect()等,它們會(huì)在我們編寫(xiě)的的socket類(lèi)中調(diào)用到。
void MySocket::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
if(nErrorCode==0)
{
((CServerDlg*)m_pDlg)->OnAccept();
}
CAsyncSocket::OnAccept(nErrorCode);
}
這里只寫(xiě)了一個(gè)OnAccept()函數(shù),其他的幾個(gè)中也有類(lèi)似的調(diào)用。詳細(xì)的請(qǐng)參考代碼。


email: ghs_linux@163.com
歡迎交流哦 :)

posted on 2006-07-27 12:05 信任 閱讀(6078) 評(píng)論(38)  編輯 收藏 引用

評(píng)論

# re: MFC socket程序開(kāi)發(fā) 2006-08-08 14:14 ankh
hi~能否把完整的代碼貼出來(lái)?
或email到ankh2008@hotmail.com?  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2006-08-08 14:14 ankh
hi~能否把完整的代碼貼出來(lái)?
或email到ankh2008@hotmail.com?  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2006-08-09 08:33 ghslinux
可以的。  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2006-08-11 12:18 ghslinux
已經(jīng)發(fā)送,請(qǐng)查收。  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2006-08-18 09:22 marco
能否把完整的代碼email到marcovanshine@hotmail.com? 謝謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2006-09-14 15:28 Mac
好東西,學(xué)習(xí)...  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2006-10-09 23:33 清風(fēng)
樓主能否把完整代碼發(fā)送到chenweizi@sina.com
多謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2007-01-23 11:36 cherry
謝謝,小妹可否求一份完整的代碼,發(fā)送到lyl83213@hotmail.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-04-07 15:36 majia
請(qǐng)把這段程序的代碼發(fā)給我一份!謝謝!majia1984@126.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-04-10 11:52 小路
你好 我也要一份 謝謝你!!!
blueshiang@hotmail.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-04-23 10:25 清涼
您好,能否也給我發(fā)一份,學(xué)習(xí),呵呵,謝謝
huangsup110@hotmail.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-04-23 14:06 信任
已經(jīng)發(fā)送  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-05-07 00:33 xiaoye
能否給我發(fā)一分,yesj-2008@163.com,謝謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-05-09 15:16 信任
已發(fā)送。  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-05-09 15:17 信任
@清涼
已發(fā)送  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-05-20 19:47 piccolo
您好,能給我也發(fā)一份么,我在做畢業(yè)設(shè)計(jì),有網(wǎng)絡(luò)編程方面的內(nèi)容
謝謝 郵箱是
lgpiccolo@163.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-05-23 11:03 ly
你好,能給我發(fā)一份么》?我正在學(xué)習(xí)這方面,謝謝
ly24381@163.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-06-03 20:21 goldfisher
能否給我發(fā)一個(gè)完整的代碼?非常感謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-06-03 20:22 goldfisher
剛忘了帖EMAIL,呵呵,goldfisher.jin@gmail.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-06-06 11:14 hwan
能給我也發(fā)一個(gè)完整的代碼嗎? hwan_hh@126.com,謝謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-06-10 14:23 hby0501
LZ 我也想要一份,可以么? 謝謝?。?!  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-06-10 14:24 hby0501
hby0501@163.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-06-13 23:09 hiyawu
小弟需要完整代碼
郵箱 123514228@qq.com
???thanks  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2008-07-09 20:50 好人
你好,我很需要這方面的代碼。能否給我發(fā)一份
謝謝
zs060226@163.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2009-04-18 16:35 caogenxia
可以給一份代碼我看看嗎,caogenxia@qq.com
  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā)[未登錄](méi) 2009-06-13 21:30 天行
能不能將完整代碼發(fā)到meibao_2000@163.com。

先謝了。  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2009-06-25 00:44 hannah
可以給我一分完整代碼嗎?yuhannah@hotmail.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2011-05-17 11:17 閉環(huán)
樓主您好 能不能把完整的代碼發(fā)到279676738@qq.com
不勝感激 正在學(xué)習(xí)中  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā)[未登錄](méi) 2011-05-19 09:20 小王
你好,能否給我一份,謝謝了,505115063@qq.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā)[未登錄](méi) 2011-05-29 15:25 star
謝謝。。能夠給我發(fā)一份啊。。正在系統(tǒng)編程中,找了好久啊。。
623383843@qq.com
  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2011-11-23 21:50 陳秋明
您好,看了后,感覺(jué)寫(xiě)的很好,但是有些細(xì)節(jié)有點(diǎn)疑惑,可否也發(fā)一份給我,我正在學(xué)習(xí)網(wǎng)絡(luò)編程中!謝謝
郵箱:540284410@qq.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā)[未登錄](méi) 2013-04-10 10:50 lei
您好,這篇文章的完整代碼還有嗎,可否發(fā)我有一份,謝謝!416296223@qq.com  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2013-05-28 10:44 jeansnorth
您好 請(qǐng)問(wèn)能否給我發(fā)一份完整的TCP通信程序呢 我的郵箱是jeansnorth@163.com 不勝感激 本人是新手 看一部分代碼還是不太懂  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā)[未登錄](méi) 2013-06-10 10:01 Ben
您好,麻煩您也給我發(fā)一份好嗎?我的郵箱1324468038@qq.com 謝謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2013-11-18 11:23 Guilty
你好 能給我發(fā)一份源代碼嗎 270503325@qq.com 謝謝  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2015-02-20 16:10 陳晶
@信任
能發(fā)一份給我嗎?非常需要,謝謝啦  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2015-04-03 13:30 linuxsocket
以上代碼都全部發(fā)送  回復(fù)  更多評(píng)論
  

# re: MFC socket程序開(kāi)發(fā) 2015-08-31 16:21 劉培坤
能否發(fā)送一份給我,謝謝 郵箱lpkhappy@yeah.net@linuxsocket
  回復(fù)  更多評(píng)論
  


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


敏捷軟件、敏捷企業(yè)管理系統(tǒng) 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              日韩一区二区免费高清| 亚洲激情另类| 中文亚洲欧美| 久久精品视频va| 亚洲视频在线观看| 国产精品99久久久久久久久久久久 | 正在播放亚洲| 一区二区国产精品| 亚洲一区二区精品在线| 亚洲欧美国产va在线影院| 亚洲综合999| 午夜精品电影| 久久国产加勒比精品无码| 西瓜成人精品人成网站| 久久精品国产精品亚洲精品| 久久久久亚洲综合| 女女同性精品视频| 欧美日韩在线播放一区| 国产美女精品免费电影| 亚洲在线免费| 久久综合狠狠综合久久综合88| 美女黄色成人网| 欧美日韩一区二区三区在线看| 国产精品xxxxx| 国产综合色在线视频区| 亚洲精品国产欧美| 先锋影音国产一区| 欧美国产日韩一区二区在线观看| 亚洲高清不卡在线| 欧美成人a∨高清免费观看| 亚洲国产精品第一区二区| 亚洲视频高清| 欧美国产精品日韩| 国产日韩一区欧美| 99亚洲视频| 久久久噜噜噜| 99v久久综合狠狠综合久久| 欧美在线中文字幕| 欧美视频精品在线观看| 在线欧美不卡| 在线性视频日韩欧美| 西瓜成人精品人成网站| 欧美激情欧美激情在线五月| 亚洲无线视频| 欧美精品v国产精品v日韩精品| 久久久国产午夜精品| 亚洲一区二区三区在线播放| 久久国产精品久久久久久电车| 亚洲欧美999| 欧美福利在线观看| 欧美一区二区在线视频| 国产精品高潮呻吟| 99av国产精品欲麻豆| 免费欧美视频| 欧美一级片久久久久久久| 欧美日韩一区二区在线观看视频 | 一区二区三区精品视频| 久久综合色一综合色88| 午夜精品久久久久久久99黑人| 欧美激情自拍| 亚洲国产天堂久久综合网| 久久精品日产第一区二区三区| 亚洲国产欧美在线人成| 久久久久久久一区| 国产麻豆91精品| 亚洲永久网站| 9i看片成人免费高清| 欧美精品亚洲精品| 亚洲韩国精品一区| 欧美电影免费观看高清| 久久久xxx| 精品91久久久久| 久久艳片www.17c.com| 亚洲欧美日韩国产综合精品二区| 欧美午夜不卡视频| 亚洲欧美日本精品| 国内精品久久久久影院色 | 久久久国产一区二区| 亚洲一区在线观看视频| 欧美日韩一区二区视频在线| 中文一区在线| 亚洲美女黄色| 国产精品久久午夜| 亚洲欧美日韩精品一区二区| 中文国产成人精品| 国产精品a久久久久久| 亚洲欧美日韩一区| 亚洲伊人观看| 国产一区二区你懂的| 久久一区二区三区四区| 久久综合色8888| 亚洲乱码国产乱码精品精98午夜| 最新成人av在线| 欧美日韩色婷婷| 性欧美长视频| 久久久青草青青国产亚洲免观| 亚洲黄色有码视频| 一本大道久久a久久精品综合| 国产精品久久久久久久久借妻 | 久久综合九九| 亚洲国产日日夜夜| 一区二区久久久久久| 国产精品一香蕉国产线看观看| 久久激五月天综合精品| 久久久久国产精品厨房| 最新国产拍偷乱拍精品| 夜夜精品视频一区二区| 国一区二区在线观看| 亚洲第一色在线| 国产精品久久综合| 久久亚洲精品视频| 小辣椒精品导航| 亚洲久久一区| 午夜精品久久久久久久99热浪潮 | 国产精品福利在线| 久色婷婷小香蕉久久| 欧美日韩的一区二区| 久久久久久亚洲精品不卡4k岛国| 久久综合中文色婷婷| 亚洲一级免费视频| 久久理论片午夜琪琪电影网| 亚洲视频在线二区| 欧美搞黄网站| 久久国产日韩| 欧美性事免费在线观看| 亚洲精品久久久久久久久久久久| 国内自拍一区| 亚洲综合另类| 一区二区三区免费观看| 欧美大片免费观看| 久久伊人亚洲| 国产欧美一区视频| 亚洲尤物精选| 亚洲视频碰碰| 亚洲靠逼com| 久久男女视频| 久久av在线看| 国产精品一卡二卡| 一本久久综合亚洲鲁鲁| 在线亚洲免费| 欧美精品一区二区三区蜜桃| 欧美激情导航| 亚洲黑丝在线| 亚洲欧美成人网| 欧美亚洲一区二区在线| 国产精品视频1区| 中文国产成人精品久久一| 亚洲九九精品| 欧美激情一区二区三区在线视频观看| 久久久久久久综合色一本| 国产欧美一区视频| 久久精品盗摄| 美女视频黄a大片欧美| 国产在线一区二区三区四区 | 午夜欧美不卡精品aaaaa| 欧美日韩黄色大片| 一本色道久久综合亚洲精品按摩 | 国产亚洲欧美日韩在线一区| 正在播放亚洲一区| 亚洲欧美日韩一区二区三区在线| 国产精品99免费看| 亚洲男人第一网站| 久久久精品免费视频| 一区三区视频| 欧美 日韩 国产 一区| 亚洲福利久久| av成人天堂| 国产精品萝li| 久久精品国产亚洲一区二区| 你懂的网址国产 欧美| 日韩视频一区二区三区在线播放免费观看 | 一本一本久久| 欧美一区二区高清| 国产在线观看一区| 欧美黄色一区二区| 在线一区二区三区做爰视频网站 | 最新亚洲激情| 欧美日韩视频在线一区二区| 亚洲视频免费观看| 欧美不卡在线视频| 99视频精品| 国语自产精品视频在线看8查询8| 欧美国产日本| 亚洲欧美电影院| 亚洲激情在线播放| 久久精品一区二区三区不卡| 亚洲精品影院在线观看| 国产午夜亚洲精品理论片色戒| 欧美激情一区二区三区高清视频| 亚洲一区二区三| 免费永久网站黄欧美| 亚洲综合二区| 亚洲欧洲视频| 国产欧美短视频| 欧美日韩国产综合视频在线观看中文| 久久国产手机看片| 亚洲毛片视频| 亚洲激情成人| 久久综合色88| 久久精品女人的天堂av|