up
解决方案 »
- 关于CAsyncSocket
- 请教大侠,我在DLL中使用Gdiplus,设置没问题,但是一运行到建立Gdiplus对象就会报错在GetSafeHandle()中出错,怎么解决?
- 请教高手,怎样实现一个显示仪表表盘的界面?
- 大家碰过这种问题没,类用不了类向导(不是普通的用不了),是这样的,类向导一选中这个类,它就弹出下面的warning
- 用sdk如何读取一储存点坐标的文件并绘出图形
- 用来listen的CAsyncSocket的Creat()方法默认是绑定内网ip还是外网ip
- 菜鸟问题
- 关于safe array 和asp的问题
- 关于ActiveX控件的疑惑?
- 请指教:我是刚学习VC,现在有一个问题:在对话框上有一个BUTTON,现在怎么映射MOUSE在BUTTON移动时的移动消息?
- 线程用在 串口通讯中 的一个问题,请教高手!
- 关于RAS
//声明:(SvrDlg.h)
SOCKET msgsock[20];//允许同时连接20个客户
SOCKET sock;
sockaddr_in serv;
int nAddrLen;
//初始化socket:(SvrDlg.cpp)
for(int i = 0;i<20;i++)
{
msgsock[i] = NULL
|
//设定地址
serv.sin_addr.s_addr = htonl(INADDR_ANY);
serv.sin_family = AF_INET;
serv.sin_port = 5000;
nAddrLen = sizeof(serv);//创建Socket
sock = socket(AF_INET,SOCK_STREAM,0);
//绑定
if(bind(sock,(sockaddr*)&serv,nAddrLen))
{
AfxMessageBox("1绑定错误");
return FALSE;
}
else
{
//AfxMessageBox("服务器创建成功");
//开始侦听
listen(sock,5);
//调用线程
AfxBeginThread(&thread,0);
}//服务器接收线程
UINT thread(LPVOID p)
{
char buff[100];
CString strReceived;
CString command;
int s=1,loop=0,i;
CSvrDlg* pDlg = (CSvrDlg*)AfxGetApp()->GetMainWnd();
for (i = 0;i<20;i++)
{
if(pDlg->msgsock[i] == NULL)
{
loop = 1;//判断是否还有空缺
break;
}
}
if(loop)
{
s=1;
pDlg->msgsock[i] = accept(pDlg->sock,(sockaddr*)&(pDlg->serv),
&(pDlg->nAddrLen));//用空缺sock等待客户的连接;
if(pDlg->msgsock[i] == INVALID_SOCKET)
AfxMessageBox("Accept fail!");
else
{
AfxBeginThread(thread,0);//循环调用自己(这里是关键)
//循环接收数据
while(s != SOCKET_ERROR){ //s != SOCKET_ERROR
s=recv(pDlg->msgsock[i],buff,100,0);
if(s != SOCKET_ERROR)
{
//处理数据
}
}
//if error occur
//set Socket to NULL
pDlg->msgsock[i] = NULL;
closesocket(pDlg->msgsock[i]);
..................................
}
AfxEndThread(0);
return 0;
}