服务器与客户机互传消息

2016-02-19 13:06 7 1 收藏

图老师小编精心整理的服务器与客户机互传消息希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

一、 服 务 器 程 序
  创 建 一 个 名 为“server" 的 项 目, 单 文 档 界 面。
  在serverview.h 中 加 入 代 码:
             #include “winsock.h"
        添 加 变 量:
              CSize       sizeTotal;// 控 制 滚 动 条
              int   count;// 信 息 条 数
              CString m_data[1000];// 信 息 存 放
              char    Hostname[260];
              char  Hostaddress[20];// 主 机IP 地 址
              SOCKET      m_sock;
              HANDLE      m_hListenThread;// 线 程
              BOOL  m_bInitialized;// 是 否 初 始 化
              WSADATA     WSAData;
              BOOL  flag;
              SOCKADDR_IN saClnt;
              int   saClntLen;
              BOOL  Isconnect;// 是 否 连 接    
  
  在serverview.cpp 中 重 载CServerView() 构 造 器, 创 建 并 绑 定 嵌 套 字:
        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";
  }
  
  在 析 构 函 数 中 完 成 必 需 的 清 除 操 作:
        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(nchar0)
          {     pView -m_data[pView -count + +] +
               =“Error in recvfrom";
          pView -InvalidateRect(NULL);
          }
          else
          {switch(msg[0])
          {
          case  ‘A':
          wsprintf(msg,“A:Client from %s attached",
                 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 ->

来源:http://www.tulaoshi.com/n/20160219/1602969.html

延伸阅读
标签: 服务器
邮件服务器的安装 开始--控制--添加\windows删除组件,选择网络服务中的域名服务(DNS),返回并打开应用程序服务器的电子邮件服务,打开电子邮件服务器看到POP3服务的安装,选择相应的服务安装 安装完成后从开始菜单里面找到刚刚安装的DNS服务进行配置,在DNS服务器上建立名为ham.com的区域, 建立好了区域,...
     页面代码:   <script type="text/javascript"    function ReceiveServerData(rValue)    {    alert(rValue);    }    </script   <input id="Button1" type="button" value="button" onclick ="CallServe...
标签: ASP
  now是获得服务器的时间吗,并不一定,只有在服务器端运行的脚本是获得服务器的时间,在客户端的则是获得客户端的 可以使用任何一个元素,比如span或者input记载服务器的时间,方法是 <span id="servertime"<%=now%</span,在记载下客户端的时间<span id="clienttime"</span在onload时间中写onload=cli...
class CDOSend{ public void sendMessageBox(){ try { CDO.Message oMsg = new CDO.Message(); CDO.NNTPPostConnectorClass p=new CDO.NNTPPostConnectorClass(); oMsg.From = "xxx@xxx.xxx" oMsg.To = "xxx@xxx.xxx" oMsg.Subject = "newtest"; oMsg.TextBody = "huhong test"; oMsg.Newsgroups=&qu...
标签: 服务器
服务器迁移服务器搬家教程   第一步:配置从属服务器,以下步骤(旧的服务器是192.168.1.105,新的192.168.1.200,例子) 1.这是新的服务器1.200的,添加子服务器的过程 到这里,从属服务器就搭起来了 。下面开始做转移,以转移192.168.1.0段为例。 2. 开始做转移任务。 在主服务器...

经验教程

22

收藏

37
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部