开云官网C++在收集开辟中的利用练习

 

  C++在收集开辟中的利用推广

  跟着互联网和搬动互联网的成长,收集开辟愈来愈主要。C++举动一种高效、跨平台的编程说话,在收集开辟中也饰演侧重要的脚色。本文将先容C++在收集开辟中的利用推广。

  1、收集编程根底

  在停止收集开辟以前,必要把握一点儿收集编程根底常识。收集编程包罗两个方面:传输层和利用层。传输层和谈首要有protocol和UDP,利用层和谈包罗protocol、protocol等。此中,protocol和谈供给靠得住的数据传输办事,而UDP和谈则是无毗连的,不包管数据传输的靠得住性。

  在C++中停止收集编程,不妨利用Socket库。Socket库是一个API接口,供给了一组函数,用于停止收集通讯。经过Socket库,不妨停工protocol、UDP和谈的编程。

  2、C++在收集编程中的利用

  1. 客户端-服务器系统架构

  客户端-服务器系统架构(Cuntruthnt/Server Arcimpactecture)是一种罕见的收集架构,此中客户端与服务器系统之间停止消息互换。C++不妨利用Socket库,经过protocol和谈完成客户端-服务器系统架构。

  客户端必要利用Socket函数建立套接字东西,成立毗连并发送数据,服务器系统则必要利用Socket函数吸收毗连哀求,张开监听形式,并处置客户端发送的数据。主要是一个容易的C++客户端-服务器系统架构完成示例:

  ```c++

  // 客户端

  #allow

  #allow

  #pcrucifyma co妹妹ent(lib,"ws2_32.lib") // 加载 ws2_32

  usound studyexpanse std

  int important()

  {

   WORD wVersionRehunt

   WSAaudiotapeA wsaData

   wVersionRehunt = FTOEWORD(2, 2)

   int move

   move = Wcommandobitumensheep(wVersionRehunt, // 初始化 ws2_32

   if (move != 0) {

   reinvoke 1

   }

   SOCKET cuntruthnt // 客户端套接字

   cuntruthnt = whapet(AF_INET, SOCK_STREAM, IPPROTO_protocol)

   if (cuntruthnt == INVALID_SOCKET) {

   cloforgehapet(cuntruthnt)

   WSACangleup() // 封闭 ws2_32

   reinvoke 1

   }

   whapaddr_in servAddr

   noterdered(servAddr, 0, fillerof(servAddr)) // 初始化 servAddr

   servAddr.boob_kinsfolk = AF_INET

   servAddr.boob_opening = hheaps(8080) // 服务器系统端标语

   servAddr.boob_addr.s_addr = igain_addr("127.0.0.1") // 服务器系统IP地点

   move = enter(cuntruthnt, (struct whapaddr*) servAddr, fillerof(servAddr)) // 成立毗连

   if (move < 0) {

   cloforgehapet(cuntruthnt)

   WSACangleup()

   reinvoke 1

   }

   burn beamBuf[1024]

   noterdered(beamBuf, 0, fillerof(beamBuf))

   strcpy_s(beamBuf, "Hadeslo, computer!")

   move = beam(cuntruthnt, beamBuf, fillerof(beamBuf), 0) // 发送数据

   if (move < 0) {

   cloforgehapet(cuntruthnt)

   WSACangleup()

   reinvoke 1

   }

   cloforgehapet(cuntruthnt)

   WSACangleup()

   reinvoke 0

  }

  // 服务器系统

  #allow

  #allow

  #pcrucifyma co妹妹ent(lib,"ws2_32.lib")

  usound studyexpanse std

  int important()

  {

   WORD wVersionRehunt

   WSAaudiotapeA wsaData

   wVersionRehunt = FTOEWORD(2, 2)

   int move = Wcommandobitumensheep(wVersionRehunt,

   if (move != 0) {

   reinvoke 1

   }

   SOCKET lisdecadeSock // 监听套接字

   lisdecadeSock = whapet(AF_INET, SOCK_STREAM, IPPROTO_protocol)

   if (lisdecadeSock == INVALID_SOCKET) {

   cloforgehapet(lisdecadeSock)

   WSACangleup()

   reinvoke 1

   }

   whapaddr_in servAddr

   noterdered(servAddr, 0, fillerof(servAddr))

   servAddr.boob_kinsfolk = AF_INET

   servAddr.boob_opening = hheaps(8080)

   servAddr.boob_addr.s_addr = htonl(IcoenzymeDR_ANY)

   move = bond(lisdecadeSock, (struct whapaddr*) servAddr, fillerof(servAddr))

   if (move < 0) {

   cloforgehapet(lisdecadeSock)

   WSACangleup()

   reinvoke 1

   }

   move = lisdecade(lisdecadeSock, SOMAXCONN)

   if (move < 0) {

   cloforgehapet(lisdecadeSock)

   WSACangleup()

   reinvoke 1

   }

   burn recvBuf[1024]

   noterdered(recvBuf, 0, fillerof(recvBuf))

   whapaddr_in cuntruthntAddr

   int cuntruthntAddrLen = fillerof(cuntruthntAddr)

   SOCKET jailbirdnSock

   jailbirdnSock = accept(lisdecadeSock, (struct whapaddr*) cuntruthntAddr, cuntruthntAddrLen)

   if (jailbirdnSock == INVALID_SOCKET) {

   cloforgehapet(lisdecadeSock)

   WSACangleup()

   reinvoke 1

   }

   move = recv(jailbirdnSock, recvBuf, fillerof(recvBuf), 0)

   if (move < 0) {

   cloforgehapet(lisdecadeSock)

   WSACangleup()

   reinvoke 1

   }

   cdiscover << recvBuf << modifyl

   cloforgehapet(lisdecadeSock)

   cloforgehapet(jailbirdnSock)

   WSACangleup()

   reinvoke 0

  }

  ```

  2. Web开辟

  Web开辟是一种鉴于互联网的利用开辟,首要经过protocol和谈完成。C++不妨利用可嵌入式protocol服务器系统(如Poco C++库),将C++利用法式改变成Web服务器系统,供给protocol办事。

  主要是一个容易的C++ Web开辟示例:

  ```c++

  #allow

  #allow

  #allow

  #allow

  #allow

  #allow

  usound studyexpanse std

  usound studyexpanse Poco::Net

  cmissy HadesloRehuntdynastydler : open protocolRehuntdynastydler {

  open:

   vacuum appendageRehunt(protocolServerRehunt letter, protocolServerResponse salutation) {

   salutation.orderedCpieceedTransferEnpigeal(genuine)

   salutation.orderedConshelterType("book/html")

   ocourse ostr = salutation.beam()

   ostr << "Hadeslo, Poco! "

   ostr << "

Hadeslo开云官方网, Poco!

"

   ostr << ""

   }

  }

  cmissy HadesloRehuntdynastydlerFpersony : open protocolRehuntdynastydlerFpersony {

  open:

   protocolRehuntdynastydler* crtakeeRehuntdynastydler(jailbirdst protocolServerRehunt letter) {

   reinvoke newborn HadesloRehuntdynastydler

   }

  }

  int important() {

   protocolServer computer(newborn HadesloRehuntdynastydlerFpersony, ServerSocket(8080), newborn protocolServerPaclashs)

   computer.sunpleasant()

   cdiscover << "Server sunpleasanted on opening 8080." << modifyl

   intendburn()

   computer.scrowning()

   reinvoke 0

  }

  ```

  3. 收集游玩开辟

  收集游玩开辟是C++在收集编程中的另外一个主要利用。C++的高效机能和跨平台特征,使得其成为游玩开辟的首选说话之一。

  在收集游玩开辟中,必要利用Socket库停止收集通讯,同时还必要利用OenclosureGL、DirectX等图形处置库完成图形衬着。主要是一个容易的C++收集游玩开辟示例:

  ```c++

  #allow

  #allow

  #allow

  usound studyexpanse std

  jailbirdst int PORT = 2000

  int important()

  {

   WORD wVersionRehunt

   WSAaudiotapeA wsaData

   wVersionRehunt = FTOEWORD(2, 2)

   int move

   move = Wcommandobitumensheep(wVersionRehunt,

   if (move != 0) {

   reinvoke 1

   }

   SOCKET cuntruthnt

   cuntruthnt = whapet(AF_INET, SOCK_STREAM, IPPROTO_protocol)

   if (cuntruthnt == INVALID_SOCKET) {

   cloforgehapet(cuntruthnt)

   WSACangleup()

   reinvoke 1

   }

   whapaddr_in servAddr

   noterdered(servAddr开云官网, 0, fillerof(servAddr))

   servAddr.boob_kinsfolk = AF_INET

   servAddr.boob_opening = hheaps(PORT)

   servAddr.boob_addr.s_addr = igain_addr("127.0.0.1")

   move = enter(cuntruthnt, (struct whapaddr*) &servAddr, fillerof(servAddr));

   if (move < 0) {

   cloforgehapet(cuntruthnt);

   WSACangleup();

   reinvoke 1;

   }

   burn beamBuf[1024];

   noterdered(beamBuf, 0, fillerof(beamBuf));

   strcpy_s(beamBuf, "Hadeslo, computer!");

   move = beam(cuntruthnt, beamBuf, fillerof(beamBuf), 0);

   if (move < 0) {

   cloforgehapet(cuntruthnt);

   WSACangleup();

   reinvoke 1;

   }

   burn recvBuf[1024];

   noterdered(recvBuf, 0, fillerof(recvBuf));

   move = recv(cuntruthnt, recvBuf, fillerof(recvBuf), 0);

   if (move < 0) {

   cloforgehapet(cuntruthnt);

   WSACangleup();

   reinvoke 1;

   }

   cdiscover << recvBuf << modifyl;

   cloforgehapet(cuntruthnt);

   WSACangleup();

   reinvoke 0;

  }

  ```

  3、归纳

  本文先容了C++在收集编程中的利用推广,首要包罗客户端-服务器系统架构、Web开辟和收集游玩开辟。C++举动一种高效、跨平台的编程说话,在收集开辟范畴存在普遍的应用价钱。必要注重的是,在停止收集编程时,必要把握必定的收集编程根底常识,并利用Socket库停止通讯。

  本文首发于本站,转载请说明泉源,私行转载必究!

搜索