首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

MFC socket编程 客户端 红字部分麻烦大神解释上

2013-03-04 
MFCsocket编程 客户端红字部分麻烦大神解释下UINT thread(LPVOID v){char buff[100]char array[25][30]{

MFC socket编程 客户端 红字部分麻烦大神解释下
UINT thread(LPVOID v)
{
char buff[100];
char array[25][30]=
{"155.245.160.151",
 "155.245.160.152",
 "155.245.160.153",
 "155.245.160.154",
 "155.245.160.155",
 "155.245.160.156",
 "155.245.160.157",
 "155.245.160.158",
 "155.245.160.159",
 "155.245.160.160",
 "155.245.160.161",
 "155.245.160.162",
 "155.245.160.163",
 "155.245.160.164",
 "155.245.160.165",
 "155.245.160.166",
 "155.245.160.167",
 "155.245.160.168",
 "155.245.160.169",
 "155.245.160.170",
 "155.245.160.171",
 "155.245.160.172",
 "155.245.160.173",
 "155.245.160.174",
 "155.245.160.175"};//这是干什么的
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++,"连接成功");
dlg->m_button1.EnableWindow(TRUE);
    dlg->SetForegroundWindow();

//循环获得数据
while(s!=SOCKET_ERROR && dlg->ee!=0)
{
//调用recv函数接收数据
s=recv(dlg->clisock,buff,100,0);
    dlg->SetForegroundWindow();
if (s!=SOCKET_ERROR && dlg->ee!=0)
dlg->m_list.InsertItem(dlg->count++,buff);
dlg->m_list.Scroll(size);
}
//发送断开命令
send(dlg->clisock,"Disconnected",100,0);
dlg->m_button1.EnableWindow(FALSE);
dlg->m_connect.EnableWindow(TRUE);
dlg->m_disconnect.EnableWindow(FALSE);
closesocket(dlg->clisock);
AfxEndThread(0);
return 0;
} socket mfc 编程
[解决办法]
dlg->cli.sin_addr.s_addr=inet_addr(array[addcount++]);
这段代码就解释了你的红色字体部分的问题!
设置IP地址!
[解决办法]
定义了一组ip地址列表
[解决办法]

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++]);
}


connect连接,服务器IP地址就是array里面定义的那一群。
两个for循环,这种busy loop不会被编译器优化掉吗?是不是用Sleep更好啊。

热点排行