套接字編程實例.doc_第1頁
套接字編程實例.doc_第2頁
套接字編程實例.doc_第3頁
套接字編程實例.doc_第4頁
套接字編程實例.doc_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

原文地址:C+網(wǎng)絡套接字編程TCP和UDP實例作者:xiaojiangjiang1. 創(chuàng)建一個簡單的SOCKET編程流程如下面向有連接的套接字編程 服務器:1) 創(chuàng)建套接字(socket)2) 將套接字綁定到一個本地地址和端口上(bind)3) 將套接字設定為監(jiān)聽模式,準備接受客戶端請求(listen)4) 等待客戶端請求到來,當請求到來后,接受連接請求,返回一個新的對應于此連接的套接字(accept)5) 用返回的套接字和客戶端進行通信(send/recv);6) 返回,等待另一個客戶端請求7) 關閉套接字客戶端:1) 創(chuàng)建套接字(socket)2) 向服務器發(fā)出連接請求(connect)3) 和服務器進行通信(send/recv)4) 關閉套接字面向無連接的套接字編程服務器:(接收端)1) 創(chuàng)建套接字(socket)2) 將套接字綁定到一個本地地址和端口上(bind)3) 用返回的套接字和客戶端進行通信(recvfrom);4) 關閉套接字客戶端:(發(fā)送端)1) 創(chuàng)建套接字(socket)2) 向服務器發(fā)送數(shù)據(jù)(sendto3) 關閉套接字例如:面向有連接的套接字編程首先在工程-設置link 在對象庫模板最后面再加上ws2_32.lib客戶端:#include#includeint main() /第一步:加載socket庫函數(shù) /* WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return 0; if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( ); return 0; /* /第一步,創(chuàng)建套接字 SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0) ; /定義套接字地址 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1); /獲取服務器IP地址,inet_addr()將IP地址轉為點分十進制的格式 addrSrv.sin_family = AF_INET; /sin_family 表示地址族,對于IP地址,sin_family成員將一直是AF_INET addrSrv.sin_port = htons(1234); /連接服務器 / connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR); if(connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)!=0) /MessageBox(連接失敗); /return; printf(error); return 0; else printf(success); char recvBuf100; recv(sockClient,recvBuf,100,0); printf(客戶端接收到的數(shù)據(jù):%s,recvBuf); send(sockClient,client send ,strlen(client send )+1,0); /關閉套接字 closesocket(sockClient); /清除套接字資源 WSACleanup(); return 0;服務器端:#include#includeint main() /第一步:加載socket庫函數(shù) /* WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return 0; if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( ); return 0; /* /第二步創(chuàng)建套接字 SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0); /第三步:綁定套接字 /獲取地址結構 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); /將IP地址指定為INADDR_ANY,允許套接字向任何分配給本地機器的IP地址發(fā)送或接收數(shù)據(jù) /htonl()將主機的無符號長整形數(shù)轉換成網(wǎng)絡字節(jié)順序。 addrSrv.sin_family = AF_INET; /sin_family 表示地址族,對于IP地址,sin_family成員將一直是AF_INET addrSrv.sin_port = htons(6000); /htons()將主機的無符號短整形數(shù)轉換成網(wǎng)絡字節(jié)順序 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR); /監(jiān)聽客戶端 listen(sockSrv,5); /定義從客戶端接受的地址信息 SOCKADDR_IN addrClient ; int len = sizeof(SOCKADDR); while(1) /不斷等待客戶端的請求的到來,并接受客戶端的連接請求 printf(等待客戶連接n); SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendBuf100; sprintf(sendBuf,welcome %s to wuhan,inet_ntoa(addrClient.sin_addr); printf(發(fā)送數(shù)據(jù)n); send(sockConn,sendBuf,strlen(sendBuf)+1,0); char recvBuf100; printf(等待接受數(shù)據(jù)n); recv(sockConn,recvBuf,100,0); printf(%sn,recvBuf); closesocket(sockConn); WSACleanup(); return 0;面向無連接的套接字編程例子:客戶端:#include Winsock2.h#include stdio.hint main() /第一步:加載socket庫函數(shù) /* WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return 0; if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( ); return 0; /創(chuàng)建套接字 SOCKET sockClient = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN sockSrv; sockSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1); sockSrv.sin_family = AF_INET ; sockSrv.sin_port = htons(6000); sendto(sockClient,hello,strlen(hello)+1,0,(SOCKADDR*)&sockSrv,sizeof(SOCKADDR); closesocket(sockClient); WSACleanup(); return 0;服務器:#include Winsock2.h#include stdio.hint main() /第一步:加載socket庫函數(shù) /* WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return 0; if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( ); return 0; /創(chuàng)建套接字 SOCKET sockSrv = socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addSrv; addSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1); addSrv.sin_family = AF_INET ; addSrv.sin_port = htons(6000); bind(sockSrv,(SOCKADDR*)&addSrv,sizeo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論