TCP 服务器端聊天
基于服务器端聊天系统 //·þÎñÆ÷Ïß³Ì UINT thread(LPVOID p) { char buff[100]; CSize size; size.cx=0; size.cy=30; int s=1,msgcount,loop=1,flag=0; CCSocketDlg *dlg=(CCSocketDlg*)AfxGetApp()->GetMainWnd(); //»ñµÃ¿Í»§¶ËÊýÁ¿ msgcount=dlg->getcount(); if (msgcount==-1) loop=0; if(loop) { s=1; dlg->msgsock[msgcount]=accept(dlg->sock,(sockaddr*)&(dlg->serv),&(dlg->addlen)); if (dlg->msgsock[msgcount]==INVALID_SOCKET) { dlg->m_edit.SetWindowText("Error accept"); } else { //Æô¶¯Ïß³Ì AfxBeginThread(thread,0); dlg->SetForegroundWindow(); dlg->m_list.InsertItem(dlg->count++,"Á¬½Ó³É¹¦"); dlg->m_list.InsertItem(dlg->count++,inet_ntoa(dlg->serv.sin_addr)); dlg->m_list.Scroll(size); dlg->m_button.EnableWindow(TRUE); while(s!=SOCKET_ERROR) { //Ñ»·½ÓÊÕÊý¾Ý s=recv(dlg->msgsock[msgcount],buff,100,0); dlg->SetForegroundWindow(); if (s!=SOCKET_ERROR) { dlg->m_list.InsertItem(dlg->count++,buff); dlg->m_list.Scroll(size); dlg->sendtoall(dlg->msgsock[msgcount],buff); } } send(dlg->msgsock[msgcount],"Disconnected",100,0); dlg->m_list.InsertItem(dlg->count++,"Disconnected"); dlg->m_list.Scroll(size); dlg->msgsock[msgcount]=NULL; for (int i=0;i<50;i++) if (dlg->msgsock[i]!=NULL) flag=1; if (flag!=1) dlg->m_button.EnableWindow(FALSE); closesocket(dlg->msgsock[msgcount]); } } //ÖÕÖ¹Ïß³Ì AfxEndThread(0); return 0; }
- 1
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助