多线程通讯-TCP聊天程序-VC++(2)

2019-01-18 21:41

dlg->m_list.InsertItem(dlg->count++,buff); dlg->m_list.Scroll(size); dlg->sendtoall(dlg->msgsock[msgcount],buff);//发送信息到所有的客户端 } } send(dlg->msgsock[msgcount],\如果发生错误,发送连接中断消息到客户端 dlg->m_list.InsertItem(dlg->count++,\显示相关信息 dlg->m_list.Scroll(size); dlg->msgsock[msgcount]=NULL;//将该SOCKET设定为空 for (int i=0;i<50;i++)//判断是否还有其他客户在保持连接 if (dlg->msgsock!=NULL) flag=1; if (flag!=1)//如果没有客户连接了,则将发送按钮设置为不可用 dlg->m_button.EnableWindow(FALSE); closesocket(dlg->msgsock[msgcount]);//关闭连接 } } AfxEndThread(0); //终止线程 return 0; } 3、数据发送 当用户在文本框中输入要发送的信息后,然后单击“发送”按钮,则执行以下代码。 //发送数据 void CCSocketDlg::OnButton1() { char buff[100]; m_edit.GetWindowText(buff,99);//获得当前文本框中的信息 m_edit.SetWindowText(\清空文本框的信息 m_list.InsertItem(count++,buff);//向列表框中插入要发送的数据 CSize size; size.cx=0; size.cy=30; m_list.Scroll(size); for (int i=0;i<50;i++)//循环向所有客户发送信息 { if (msgsock!=NULL) send(msgsock,buff,100,0); } } <二>、客户端 1、 连接服务器 连接服务器的程序是在“连接”按扭的单击事件中处理的。 //连接服务器,连接按扭处理事件 void CCSocketcliDlg::OnButton2() { char ipaddress[35];//定义标量以保存服务器地址 m_edit2.GetWindowText(ipaddress,30);//获得服务器地址 cli.sin_addr.s_addr=inet_addr(ipaddress);//设定SOCKET需要连接的地址 cli.sin_family=AF_INET; cli.sin_port=5000;//htons(5000);//设定服务器端口 clisock=socket(AF_INET,SOCK_STREAM,0); //创建socket ee=1; AfxBeginThread(thread,0); //启动线程 } 2、 接收数据线程 当用户单击“连接”按钮以后,程序进行相关设定,最后调用了“AfxBeginThread(thread,0);”启动了该线程。 UINT thread(LPVOID v) { char buff[100]; char array[25][30]=//定义数组用来存放一些IP地址 {\ ?(这里省略了部分IP) \ CSize size; size.cx=0; size.cy=30; int s=1,addcount=0; CCSocketcliDlg *dlg=(CCSocketcliDlg*) AfxGetApp()->GetMainWnd();//获得对话框 dlg->m_connect.EnableWindow(FALSE); dlg->m_disconnect.EnableWindow(TRUE); while(connect(dlg->clisock,(sockaddr*)&(dlg->cli),sizeof(dlg->cli)) && dlg->ee!=0) //连接到服务器 { dlg->m_edit.SetWindowText(\等待.....\ for (int i=0;i<=65000;i++)//空循环 for(int j=0;j<=200;j++); if (addcount==25) addcount=0; dlg->cli.sin_addr.s_addr=inet_addr(array[addcount++]);//如果连接不成功,则连接下一个地址 } if (dlg->ee==1)//如果连接成功,则显示相关信息 dlg->m_list.InsertItem(dlg->count++,\连接成功\


多线程通讯-TCP聊天程序-VC++(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:档案管理流程及制度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: