資源描述:
《基于TCPIP協(xié)議的CS通信》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、系統(tǒng)功能描述:在同一臺(tái)機(jī)器上,首先啟動(dòng)服務(wù)器,然后啟動(dòng)客戶(hù)端,服務(wù)器和客戶(hù)端都是基于對(duì)話(huà)框的應(yīng)用程序!(1)?當(dāng)客戶(hù)端啟動(dòng)后,向服務(wù)器發(fā)出連接請(qǐng)求,服務(wù)器接到請(qǐng)求后向客八端發(fā)送“連接請(qǐng)求已被接受”的應(yīng)答消息,然后在服務(wù)器對(duì)話(huà)框里的編輯框中顯示剛才請(qǐng)求連接的客戶(hù)端的IP和請(qǐng)求發(fā)生的時(shí)間。注:對(duì)客戶(hù)端用戶(hù)發(fā)送的數(shù)據(jù)暫時(shí)不進(jìn)行處理。(2).在客戶(hù)端,先顯示服務(wù)器的提示消息,然后將B己發(fā)送的內(nèi)容也顯示在客戶(hù)端對(duì)話(huà)框的編輯框中。問(wèn)題描述:啟動(dòng)服務(wù)器和客戶(hù)端,當(dāng)客戶(hù)端發(fā)送數(shù)據(jù)后服務(wù)器沒(méi)一點(diǎn)反應(yīng)??上н@里不能粘貼木地圖片,我想把那兩個(gè)對(duì)話(huà)框的圖發(fā)上來(lái)的……(一)
2、客戶(hù)端的發(fā)送按鈕響應(yīng)函數(shù):voidCClientDlg::OnClientsend(){〃創(chuàng)建客戶(hù)端套接字SOCKETsockClicnt=sockct(AF_INET,SOCK_STREAM,0);〃目標(biāo)服務(wù)器地址SOCKADDRJNaddrSrv;addrSrv.sin_addr.S_un.S_addr=inct_addr("127.0.0.1");addrSrv.sin_family=AF_INET;addrSrv.sin_port=50000;〃向服務(wù)器發(fā)出連接請(qǐng)求conncct(sockClicnt,(sockaddr*)&addrSrv
3、,sizcof(addrSrv));〃接收服務(wù)器的捉示消息charrecvBuf[45J;recv(sockClient,recvBuf,45,0);〃在客戶(hù)端信息框中顯示服務(wù)器應(yīng)答信息SetDlgItemText(IDC_EDIT1,recvBuf);〃向服務(wù)器發(fā)送數(shù)據(jù)charsendBuf[50];GetDlgItemText(lDC_SENDTEXT,sendBuf,50);send(sockClient,sendBuf,strlen(sendBuf)+l,0);〃在客戶(hù)端顯示發(fā)送的信息CStringclientStr;GetDlgItemT
4、ext(lDC_EDIT1,clientStr);clicntStr+=nrH;CStringstrTemp;GetDlgItemText(lDC_SENDTEXT,strTemp);clientStr+=strTemp;SctDlgItcmTcxt(IDC_EDITl,clicntStr);〃清空發(fā)送框內(nèi)容SetDlgItemText(IDC_SENDTEXT,nn);}(二)服務(wù)器1.〃創(chuàng)建并初始化套接字BOOLCScrvcrDlg::InitSockct(){〃創(chuàng)建套接字m_socket=socket(AF_INET,SOCK_STRE
5、AM,0);structsockaddr_inaddrSrv;addrSrv.sin_family=AF_INET;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_port=htons(50000);〃綁定套接字bind(m_socket,(sockaddr*)&addrSrv,sizeof(addrSrv));〃監(jiān)聽(tīng)listen(m_socket,5);returnFALSE;}2.在CServerDlg::OnInitDialog()函數(shù)的返回語(yǔ)句詢(xún)加了這些初始化語(yǔ)句Init
6、Socket();〃調(diào)用上面的套接字初始化函數(shù)RECVPARAM*pRecvParam=newRECVPARAM;//RECVPARAM是一個(gè)結(jié)構(gòu)體,有兩個(gè)成員,用來(lái)向線(xiàn)程函數(shù)提供參數(shù)pRecvParam->sock=m_socket;pRccvParam->hwnd=m_hWnd;//創(chuàng)建接收線(xiàn)程HANDLEhThrcad=CrcatcThrcad(NULL,0,RccvProc,(LPVOID)pRccvParam,0,NULL);〃關(guān)閉接收線(xiàn)程,釋放引用計(jì)數(shù)CloseHandle(hThread);2.這個(gè)就是接收客戶(hù)端請(qǐng)求的線(xiàn)程DWORDW
7、INAPICScrvcrDlg::RccvProc(LPVOIDIpParamctcr){〃獲取主線(xiàn)程傳遞的套接字和窗口句柄SOCKETsock=((RECVPARAM*)lpParameter)->sock;HWNDhwnd=((RECVPARAM*)lpParameter)->hwnd;deleteIpParamctcr;〃保存客戶(hù)端地址structsockaddr_inaddrClient;intlen=sizeof(sockaddr);〃等待客八端請(qǐng)求到來(lái)while(1){SOCKETsockConn=accept(sock,(sockad
8、dr*)&addrClient,&len);〃向客戶(hù)端發(fā)送請(qǐng)求已經(jīng)接受的消息charsendBuf[45]=MYourre