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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

服務(wù)器與客戶機(jī)互傳消息

2019-11-17 05:36:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  一、 服 務(wù) 器 程 序
創(chuàng) 建 一 個(gè) 名 為“server" 的 項(xiàng) 目, 單 文 檔 界 面。
在serverview.h 中 加 入 代 碼:
           #include “winsock.h"
      添 加 變 量:
            CSize       sizeTotal;// 控 制 滾 動(dòng) 條
            int   count;// 信 息 條 數(shù)
            CString m_data[1000];// 信 息 存 放
            char    Hostname[260];
            char  Hostaddress[20];// 主 機(jī)ip 地 址
            SOCKET      m_sock;
            HANDLE      m_hListenThread;// 線 程
            BOOL  m_bInitialized;// 是 否 初 始 化
            WSADATA     WSAData;
            BOOL  flag;
            SOCKADDR_IN saClnt;
            int   saClntLen;
            BOOL  Isconnect;// 是 否 連 接    

在serverview.cpp 中 重 載CServerView() 構(gòu) 造 器, 創(chuàng) 建 并 綁 定 嵌 套 字:
      CServerView::CServerView()
{     // TODO: add constrUCtion code here
      Isconnect=FALSE;
      flag=FALSE;
      sizeTotal.cy=350;
      sizeTotal.cx=300;
      m_hListenThread;
      count=5;
      int status;
      WSADATA wsaData;
   m_data[0]=“initializing Windows Sockets DLL....";
      if((status=WSAStartup(0x0101, &wsaData))==0)
      {     m_data[0] +=“Succeeded";
            m_bInitialized=TRUE;

      }
      else
      {     m_bInitialized=FALSE;
      }
      m_sock=socket(AF_INET,SOCK_DGRAM,0);
      m_data[1]=“Creating socket....";
      if(m_sock==INVALID_SOCKET)
      {     m_data[1] +=“Failed";
      }
      m_data[1] +=“Succeeded";
      m_data[2]=“Binding socket....";
      sockaddr_in sa;
      sa.sin_family=AF_INET;
      sa.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
      sa.sin_port=htons(5050);
      if(bind(m_sock,(PSOCKADDR)
     &sa,sizeof(sa))==SOCKET_ERROR)
      {     m_data[2] +=“Failed";
            closesocket(m_sock);
      }
      m_data[2] +=“Succeeded";
      m_data[3]=“Creating listener thread....";
      unsigned long idThread;
m_hListenThread=CreateThread(NULL,0,
(LPTHREAD_START_ROUTINE)Listen,
(void        if(m_hListenThread)
      {     m_data[3] +=“Succeeded";
            m_data[4] +=“Listening....";
      }
      else
            m_data[4] +=“Failed";
}

在 析 構(gòu) 函 數(shù) 中 完 成 必 需 的 清 除 操 作:
      CServerView:: ~CServerView()
{     if(m_bInitialized)
      WSACleanup();
      closesocket(m_sock);
      if(m_hListenThread)
      ::TerminateThread(m_hListenThread,0);
}     

定 義 接 收 和 處 理 消 息 的 線 程:
      long WINAPI Listen(CServerView *pView)
{     char msg[2000]=“";

      int   nchar;
      SOCKADDR_IN saClnt;
      int saClntLen;
      while(1)
      { saClntLen=sizeof(saClnt);
        nchar=recvfrom(pView ->m_sock,msg,1024,0,
(PSOCKADDR) &saClnt, &saClntLen);
        if(nchar<0)
        {     pView ->m_data[pView ->count + +] +
             =“Error in recvfrom/n";
        pView ->InvalidateRect(NULL);
        }
        else
        {switch(msg[0])
        {
        case  ‘A':
        wsPRintf(msg,“A:Client from %s attached/n",
               inet_ntoa(saClnt.sin_addr));
        pView ->m_data[pView ->count + +]=msg;
        pView ->flag=TRUE;
        pView ->InvalidateRect(NULL);
        pView ->Isconnect=TRUE;
        pView ->saClnt=saClnt;
        pView ->saClntLen=saClntLen;
        sendto(pView ->

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沙湾县| 湛江市| 临汾市| 东乡| 瑞金市| 浙江省| 五大连池市| 馆陶县| 城固县| 上思县| 黑山县| 茂名市| 正阳县| 邢台县| 河西区| 海阳市| 婺源县| 大悟县| 兴山县| 土默特左旗| 济南市| 长岭县| 云和县| 罗甸县| 南川市| 太康县| 武清区| 桐庐县| 五莲县| 晋中市| 禹州市| 昌宁县| 洛浦县| 宁德市| 莱西市| 滨海县| 泸州市| 淮南市| 云阳县| 九寨沟县| 岳西县|