当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·如何灰掉按钮    »显示摘要«
    摘要: 程序刚开始时,怎样灰掉按钮 又如何恢复呢? ......
    摘要: 我想动态显示此时的时间,请指教。 ......


各位高手:怎样实现服务器端监视客户端的连接请求,然后客户和服务器端能进行双向通信。

大侠请请详细地介绍一下实现的主要步骤好吗?

NO.1   作者: thb

BOOL   CNetMonitorApp::FoundListen()  
  {  
  if(m_pSocket!=NULL)  
  delete   m_pSocket;  
  m_pSocket   =new   CListenSocket();  
  if   (m_pSocket->Create(622))  
  {  
  if   (m_pSocket->Listen())  
  {  
  // MessageBox(NULL,"in   listen","in",MB_OK);  
  return   TRUE;  
  }  
  }  
  AfxMessageBox("Create   socket   or   Listen   failed!");  
  return   FALSE;  
  }  
  BOOL   CNetClientView::ConnectServer()  
  {  
  if(pClientSock->m_hSocket==INVALID_SOCKET)  
  {  
  if(!pClientSock->Create())//创建连接套接字  
  {  
  delete   pClientSock;  
  pClientSock=NULL;  
  return   FALSE;  
  }  
  }  
  // CPtrList   NetIPList;  
  if(NetIPList.IsEmpty())  
  GetNetIPAddress(NetIPList);  
  if(NetIPList.IsEmpty())   return   FALSE;  
  //对于面向连接的用户,客户端调用Connect函数即可连接到服务器。  
  CString   *ServerIP;  
  POSITION   pos=NetIPList.GetHeadPosition();  
  BOOL   IsConnectServer=FALSE;  
  while(pos!=NULL)  
  {  
  ServerIP=(CString*)NetIPList.GetNext(pos);  
  if(pClientSock->Connect((*ServerIP),622))//"192.168.1.37"LPCSTR(*ServerIP)  
  {  
  if(NetIPList.GetCount()>1)  
  {  
  CString*   str=new   CString(LPCSTR(*ServerIP));  
  while(!NetIPList.IsEmpty())  
  delete   NetIPList.RemoveHead();  
  NetIPList.AddTail((void*)str);  
  SaveServerIP(LPCSTR(*str));  
  }  
  IsConnectServer=TRUE;  
  break;  
  }  
  }  
  if(!IsConnectServer)  
  {  
  SetTimer(3,30000,0);  
  return   FALSE;  
  }  
  pClientSock->Initialize();//初始化套接字  
  char   lpname[200];  
  DWORD   len=200;  
  GetComputerName(lpname,&len);  
  CMsg   msg;  
  msg.m_strText=lpname;  
  msg.n_Bytes=strlen(lpname);   //strName.GetLength();  
  msg.InfoFlag="HostName";  
  pClientSock->SendMsg(&msg);  
  SetTimer(1,1500,0);  
  return   TRUE;  
  }  
  ///服务器接受connect  
  CReceiveSocket*   pSocket   =   new   CReceiveSocket(this);  
  pp_Socket=pSocket;  
  lpSockAddr=new   SOCKADDR;  
  int   n_Byte=sizeof(SOCKADDR);  
  CListenSocket*   pListenSocket=((CNetMonitorApp*)AfxGetApp())->m_pSocket;  
  if   (!(pListenSocket->Accept(*pSocket,lpSockAddr,&n_Byte)))  
  {  
  MessageBox(NULL,"Accept   socket   error!",TEXT("Error"),MB_OK);  
  delete   pSocket;  
  pp_Socket=NULL;  
  return   FALSE;  
  }  
 


 ·听取大家一个意见,    »显示摘要«
    摘要: 我们这学期学了vc,说实话,学的很烂,就一周才一节课,怎么能学好呢,先学c++,很长时间,学的已经头昏眼花了,接着上了5-6节vc的编程方法,可老师愣让我们编一个图书馆管理系统,可是,我现在的水平连一个计算器都编不来,数据库又没有学,怎么办呢?时间只留15天,我就是神仙也编不来啊. 大概,老师也知道难处,放松了一点,用任何面向对象的高级语言都可以编,可是我什么也没学呀,看了一点java,也......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE