国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

Windows下C++服務(wù)端和客戶端Socket通信簡(jiǎn)單代碼

2019-11-08 00:48:14
字體:
供稿:網(wǎng)友
[cpp] view plain copy<PRe name="code" class="cpp">// Client.cpp : Defines the entry point for the console application.  //  #include "stdafx.h"  #include "winsock2.h"  #include <iostream>  #pragma comment(lib, "ws2_32.lib")  using namespace std;  BOOL    RecvLine(SOCKET s, char* buf);  //讀取一行數(shù)據(jù)  int main(int argc, char* argv[])  {      const int BUF_SIZE = 64;      WSADATA         wsd;            //WSADATA變量      SOCKET          sHost;          //服務(wù)器套接字      SOCKADDR_IN     servAddr;       //服務(wù)器地址      char            buf[BUF_SIZE];  //接收數(shù)據(jù)緩沖區(qū)      char            bufRecv[BUF_SIZE];      int             retVal;         //返回值            //初始化套結(jié)字動(dòng)態(tài)庫      if (WSAStartup(MAKEWord(2,2), &wsd) != 0)      {          cout << "WSAStartup failed!" << endl;          return -1;      }            //創(chuàng)建套接字      sHost = socket(AF_INET, SOCK_STREAM, ipPROTO_TCP);        if(INVALID_SOCKET == sHost)      {          cout << "socket failed!" << endl;          WSACleanup();//釋放套接字資源          return  -1;      }      //設(shè)置服務(wù)器地址      servAddr.sin_family =AF_INET;      servAddr.sin_addr.s_addr = inet_addr("127.0.0.1");      servAddr.sin_port = htons((short)4999);      int nServAddlen  = sizeof(servAddr);      //連接服務(wù)器      retVal=connect(sHost,(LPSOCKADDR)&servAddr, sizeof(servAddr));        if(SOCKET_ERROR == retVal)      {          cout << "connect failed!" << endl;            closesocket(sHost); //關(guān)閉套接字          WSACleanup();       //釋放套接字資源          return -1;      }      while(true){          //向服務(wù)器發(fā)送數(shù)據(jù)          ZeroMemory(buf, BUF_SIZE);          cout << " 向服務(wù)器發(fā)送數(shù)據(jù):  ";          cin >> buf;          retVal = send(sHost, buf, strlen(buf), 0);          if (SOCKET_ERROR == retVal)          {              cout << "send failed!" << endl;              closesocket(sHost); //關(guān)閉套接字              WSACleanup();       //釋放套接字資源              return -1;          }          //RecvLine(sHost, bufRecv);          recv(sHost, bufRecv,5 , 0);     // 接收服務(wù)器端的數(shù)據(jù), 只接收5個(gè)字符          cout << endl <<"從服務(wù)器接收數(shù)據(jù):" << bufRecv;      }      //退出      closesocket(sHost); //關(guān)閉套接字      WSACleanup();       //釋放套接字資源      return 0;  }  [cpp] view plain copy// Server.cpp : Defines the entry point for the console application.  //  #include "stdafx.h"  #include "winsock2.h"  #pragma comment(lib, "ws2_32.lib")  #include <iostream>  using namespace std;  int _tmain(int argc, char* argv[])  {   const int BUF_SIZE = 64;   WSADATA     wsd;    //WSADATA變量   SOCKET  sServer;    //服務(wù)器套接字   SOCKET  sClient;    //客戶端套接字   SOCKADDR_IN     addrServ;;  //服務(wù)器地址   char    buf[BUF_SIZE]; //接收數(shù)據(jù)緩沖區(qū)   char    sendBuf[BUF_SIZE];//返回給客戶端得數(shù)據(jù)   int     retVal;     //返回值   //初始化套結(jié)字動(dòng)態(tài)庫   if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)   {    cout << "WSAStartup failed!" << endl;    return 1;   }         //創(chuàng)建套接字   sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);    if(INVALID_SOCKET == sServer)   {    cout << "socket failed!" << endl;    WSACleanup();//釋放套接字資源;    return -1;   }         //服務(wù)器套接字地址    addrServ.sin_family = AF_INET;   addrServ.sin_port = htons(4999);   addrServ.sin_addr.s_addr = INADDR_ANY;     //綁定套接字   retVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN));   if(SOCKET_ERROR == retVal)   {     cout << "bind failed!" << endl;    closesocket(sServer); //關(guān)閉套接字    WSACleanup();  //釋放套接字資源;    return -1;   }         //開始監(jiān)聽    retVal = listen(sServer, 1);   if(SOCKET_ERROR == retVal)   {    cout << "listen failed!" << endl;      closesocket(sServer); //關(guān)閉套接字    WSACleanup();  //釋放套接字資源;    return -1;   }         //接受客戶端請(qǐng)求   sockaddr_in addrClient;   int addrClientlen = sizeof(addrClient);   sClient = accept(sServer,(sockaddr FAR*)&addrClient, &addrClientlen);   if(INVALID_SOCKET == sClient)   {    cout << "accept failed!" << endl;      closesocket(sServer); //關(guān)閉套接字    WSACleanup();  //釋放套接字資源;    return -1;   }         while(true){    //接收客戶端數(shù)據(jù)    ZeroMemory(buf, BUF_SIZE);    retVal = recv(sClient, buf, BUF_SIZE, 0);    if (SOCKET_ERROR == retVal)    {     cout << "recv failed!" << endl;       closesocket(sServer);    //關(guān)閉套接字     closesocket(sClient);    //關(guān)閉套接字       WSACleanup();     //釋放套接字資源;     return -1;    }    if(buf[0] == '0')     break;    cout << "客戶端發(fā)送的數(shù)據(jù): " << buf <<endl;        cout << "向客戶端發(fā)送數(shù)據(jù): " ;    cin >> sendBuf;        send(sClient, sendBuf, strlen(sendBuf), 0);   }         //退出   closesocket(sServer);  //關(guān)閉套接字   closesocket(sClient);  //關(guān)閉套接字   WSACleanup();   //釋放套接字資源;         return 0;  }  
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 司法| 盈江县| 濮阳市| 昭觉县| 三台县| 濮阳县| 寿宁县| 南康市| 翁牛特旗| 崇左市| 绥棱县| 新河县| 琼海市| 剑河县| 石屏县| 河间市| 朔州市| 克什克腾旗| 永靖县| 达州市| 洛川县| 马边| 孝感市| 曲阳县| 章丘市| 河东区| 江永县| 梁河县| 赤水市| 通城县| 江川县| 金堂县| 深圳市| 柳河县| 永清县| 栖霞市| 桐柏县| 宜良县| 呼图壁县| 吴江市| 永城市|