第一个Socket程序-test

在InitDialog中新开一个线程,作为server,

  1. BOOL CSocketTestDlg::OnInitDialog()
  2. {
  3.     CDialog::OnInitDialog();
  4.     // 将“关于...”菜单项添加到系统菜单中。
  5.     // IDM_ABOUTBOX 必须在系统命令范围内。
  6.     ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
  7.     ASSERT(IDM_ABOUTBOX < 0xF000);
  8.     CMenu* pSysMenu = GetSystemMenu(FALSE);
  9.     if (pSysMenu != NULL)
  10.     {
  11.         CString strAboutMenu;
  12.         strAboutMenu.LoadString(IDS_ABOUTBOX);
  13.         if (!strAboutMenu.IsEmpty())
  14.         {
  15.             pSysMenu->AppendMenu(MF_SEPARATOR);
  16.             pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
  17.         }
  18.     }
  19.     // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
  20.     //  执行此操作
  21.     SetIcon(m_hIcon, TRUE);         // 设置大图标
  22.     SetIcon(m_hIcon, FALSE);        // 设置小图标
  23.     // TODO: 在此添加额外的初始化代码
  24.     AfxBeginThread(servierSoc,this);  ////////////////////////////////////////////新开线程
  25. //  m_socket.Bind(
  26.     m_ButtonInput.EnableWindow(FALSE);
  27.     return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
  28. }

 

 

线程函数:

  1. UINT servierSoc(LPVOID  lparam)
  2. {
  3.     CSocketTestDlg *dlg = (CSocketTestDlg*)lparam;
  4.     AfxSocketInit(NULL);
  5.     CSocket serverSock;
  6.     serverSock.Create(2000);
  7.     for(;;)
  8.     {
  9.         serverSock.Listen();
  10.         CSocket recSock;
  11.         serverSock.Accept(recSock);
  12.         TCHAR buf[256]={0};
  13.         int len=recSock.Receive(buf,256);
  14.         if(len <0)
  15.         {
  16.             AfxMessageBox(_T("can not receive anything"));
  17.         }
  18.     //  buf[len]='/0';
  19.         dlg->m_receive.ReplaceSel(buf);
  20.         dlg->m_receive.ReplaceSel(_T("/r/n"));
  21.     }
  22. }

 

 

界面为两个CEdit 一个输入,一个显示,一个按钮,类似Msn的聊天窗口。

按钮事件函数:

  1. void CSocketTestDlg::OnBnClickedButton1()
  2. {
  3.     // TODO: 在此添加控件通知处理程序代码
  4. //  m_receive.SetWindowTextW(L"aaaa/r/naaaaa");  
  5.     //m_receive.ReplaceSel(m_strinput);
  6.     AfxSocketInit(NULL);
  7.     CSocket clientSoc;
  8.     clientSoc.Create();
  9.     clientSoc.Connect(_T("127.0.0.1"),2000);
  10.     TCHAR buf[256]={0};
  11.     GetDlgItemText(IDC_EDIT2,buf,256);
  12.     clientSoc.Send(buf,256);
  13.     
  14. }

 

 

刚开始学习socket,作为纪念

你可能感兴趣的:(框架,socket,String,server,null,聊天)