欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ 中 socket編程實(shí)例詳解

 更新時(shí)間:2017年06月15日 09:40:57   投稿:lqh  
這篇文章主要介紹了C++ 中 socket編程實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下

C++ 中 socket編程實(shí)例詳解

sockets(套接字)編程有三種,流式套接字(SOCK_STREAM),數(shù)據(jù)報(bào)套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket編程是采用的流式套接字。在這個(gè)程序中,將兩個(gè)工程添加到一個(gè)工作區(qū)。要鏈接一個(gè)ws2_32.lib的庫(kù)文件。

服務(wù)器端編程的步驟:

1:加載套接字庫(kù),創(chuàng)建套接字(WSAStartup()/socket());

2:綁定套接字到一個(gè)IP地址和一個(gè)端口上(bind());

3:將套接字設(shè)置為監(jiān)聽模式等待連接請(qǐng)求(listen());

4:請(qǐng)求到來(lái)后,接受連接請(qǐng)求,返回一個(gè)新的對(duì)應(yīng)于此次連接的套接字(accept());

5:用返回的套接字和客戶端進(jìn)行通信(send()/recv());

6:返回,等待另一連接請(qǐng)求;

7:關(guān)閉套接字,關(guān)閉加載的套接字庫(kù)(closesocket()/WSACleanup())。

服務(wù)器端代碼如下:

#include <stdio.h>
#include <Winsock2.h>
void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
 return;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
    HIBYTE( wsaData.wVersion ) != 1 ) {
 WSACleanup( );
 return;
 }
 SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(6000);
 
 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

 listen(sockSrv,5);

 SOCKADDR_IN addrClient;
 int len=sizeof(SOCKADDR);
 while(1)
 {
 SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
 char sendBuf[50];
 sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
 send(sockConn,sendBuf,strlen(sendBuf)+1,0);
 char recvBuf[50];
 recv(sockConn,recvBuf,50,0);
 printf("%s\n",recvBuf);
 closesocket(sockConn);
 }

}

客戶端編程的步驟:

1:加載套接字庫(kù),創(chuàng)建套接字(WSAStartup()/socket());

2:向服務(wù)器發(fā)出連接請(qǐng)求(connect());

3:和服務(wù)器端進(jìn)行通信(send()/recv());

4:關(guān)閉套接字,關(guān)閉加載的套接字庫(kù)(closesocket()/WSACleanup())。

客戶端的代碼如下:

#include <stdio.h>
#include <Winsock2.h>
void main()
{
 WORD wVersionRequested;
 WSADATA wsaData;
 int err;
 
 wVersionRequested = MAKEWORD( 1, 1 );
 
 err = WSAStartup( wVersionRequested, &wsaData );
 if ( err != 0 ) {
 return;
 }
 
 if ( LOBYTE( wsaData.wVersion ) != 1 ||
    HIBYTE( wsaData.wVersion ) != 1 ) {
 WSACleanup( );
 return;
 }
 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
 
 SOCKADDR_IN addrSrv;
 addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(6000);
 connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
 send(sockClient,"hello",strlen("hello")+1,0);
 char recvBuf[50];
 recv(sockClient,recvBuf,50,0);
 printf("%s\n",recvBuf);
 
 closesocket(sockClient);
 WSACleanup();
}

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • C++私有繼承(三)

    C++私有繼承(三)

    這篇文章主要介紹了C++私有繼承(三),前面的文章我們已經(jīng)介紹過(guò)了C++私有繼承(一)和(二),下面小編就繼續(xù)基于之前的內(nèi)容繼續(xù)向大家介紹C++私有繼承,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-02-02
  • C++實(shí)現(xiàn)延遲的方法詳解

    C++實(shí)現(xiàn)延遲的方法詳解

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)延遲的三個(gè)方法,文中的示例代碼講解詳細(xì),對(duì)我們深入了解C++有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-12-12
  • C語(yǔ)言文件讀寫操作介紹與簡(jiǎn)單示例

    C語(yǔ)言文件讀寫操作介紹與簡(jiǎn)單示例

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言文件讀寫操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Qt顯示QImage圖像在label上,并保持自適應(yīng)大小問題

    Qt顯示QImage圖像在label上,并保持自適應(yīng)大小問題

    這篇文章主要介紹了Qt顯示QImage圖像在label上,并保持自適應(yīng)大小問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C++語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)五子棋

    C++語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)五子棋

    這篇文章主要為大家詳細(xì)介紹了C++語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)五子棋,包括數(shù)據(jù)結(jié)構(gòu)和對(duì)象設(shè)計(jì)及主函數(shù)調(diào)用實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • C語(yǔ)言中的內(nèi)存泄露 怎樣避免與檢測(cè)

    C語(yǔ)言中的內(nèi)存泄露 怎樣避免與檢測(cè)

    堆經(jīng)常會(huì)出現(xiàn)兩種類型的問題:1.釋放或改寫仍在使用的內(nèi)存(稱為:“內(nèi)存損壞”)。2.未釋放不再使用的內(nèi)存(稱為:“內(nèi)存泄露”)。這是最難被調(diào)試發(fā)現(xiàn)的問題之一
    2013-09-09
  • C語(yǔ)言 strcpy和memcpy區(qū)別詳細(xì)介紹

    C語(yǔ)言 strcpy和memcpy區(qū)別詳細(xì)介紹

    這篇文章主要介紹了C語(yǔ)言 strcpy和memcpy區(qū)別詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • C語(yǔ)言各種操作符透徹理解上篇

    C語(yǔ)言各種操作符透徹理解上篇

    C 語(yǔ)言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符。讓我們通讀本篇來(lái)詳細(xì)了解吧
    2022-02-02
  • C指針原理教程之語(yǔ)法樹及其實(shí)現(xiàn)

    C指針原理教程之語(yǔ)法樹及其實(shí)現(xiàn)

    本文給大家分享的是如何使用C語(yǔ)言的指針原來(lái)來(lái)實(shí)現(xiàn)語(yǔ)法樹,并給大家提供了詳細(xì)的實(shí)例代碼,希望大家能夠喜歡
    2019-02-02
  • C++深入探究類與對(duì)象之友元與運(yùn)算符重載

    C++深入探究類與對(duì)象之友元與運(yùn)算符重載

    友元就是讓一個(gè)函數(shù)或者類,訪問另一個(gè)類中的私有成員;打個(gè)比方,這相當(dāng)于是說(shuō):朋友是值得信任的,所以可以對(duì)他們公開一些自己的隱私,運(yùn)算符重載的實(shí)質(zhì)就是函數(shù)重載或函數(shù)多態(tài),運(yùn)算符重載是一種形式的C++多態(tài),目的在于讓人能夠用同名的函數(shù)來(lái)完成不同的基本操作
    2022-04-04

最新評(píng)論