///////////////////////////////
反正我是菜鸟一个,不怕大家笑话我水平低还来这胡闹!
我就直接先把Client1ThreadFunc贴出来了!
UINTCCardServerView::Client1ThreadFunc(LPVOIDpParam)
{
MSGmsg;
intnMessage;
CCardServerView*pView=(CCardServerView*)pParam;
pView->m_sockListen1.Create(5802,SOCK_STREAM,"192.108.1.103");
pView->m_sockListen1.Bind(5801,"192.108.1.103");
pView->m_sockListen1.Listen(1);
if(!pView->m_sockListen1.Accept(pView->m_sockClient1))
{
pView->m_sockListen1.Close();
pView->m_bThread1Exit=FALSE;
return0;
}
pView->m_sockClient1.m_pView=pView;
pView->m_sockListen1.Close();
while(1)
{
intnMessage;
pView->m_sockListen1.Receive(&nMessage,sizeof(int));//这样可以接收到数据
GetMessage(&msg,NULL,0,0);
switch(msg.message)
{
caseWM_OUT:
{
if(pView->m_bClient1Listen)
pView->m_sockClient1.Close();
pView->m_bThread1Exit=FALSE;
return0;
}
}
}
return0;
}
两位高手,请指教了!
pView->m_sockListen1.Create(5802,SOCK_STREAM,"192.108.1.103");
pView->m_sockListen1.Bind(5801,"192.108.1.103");
还有,可不可以告诉我这两个函数中的端口号和IP号各有什么作用?我不理解!
pView->m_sockClient1.m_pView=pView;
pView->m_sockListen1.Close();
你把它关了还能接受吗?还有
pView->m_sockListen1.Receive(&nMessage,sizeof(int))
Receive函数的第一个参数是char*吧,你要先建立一个char,或byte缓冲区去接收,直接发送整型数据要使用CSocket+CSocketFile+CArchive,
CSocket是阻塞的,采用同步操作,在每次收发消息前要设置状态,用CSocket+CSocketFile+CArchive的情况下要用Flush函数,你这种情况我没有写过代码,但应该是用select函数重置状态.
楼主33楼问话有点不象话:)IP地址和端口号能有啥用?这还要问么至于27楼:这应该时另外一个线程在访问socket,导致socket阻塞在哪儿总之:对于CAsyncSocket派生的类,不能跨线程使用。socket onreceive任何包含CWnd派生对象的东西一律不可以。例如:pView对象也不能在主线程之外的其他线程里使用和窗口有关的函数
总之:对于CAsyncSocket派生的类,不能跨线程使用。任何包含CWnd派生对象的东西一律不可以。例如:pView对象也不能在主线程之外的其他线程里使用和窗口有关的函数
看样只有用线程向主线程发送消息了?!
求VC方面书目 (等)
初学ADO 求教
VC++编写的SOCKET 通信问题
单文档 用CSplitterWnd 分割后,拖拉边框视图闪烁
VC6.0中,如何调用VC建的程序中debug里的.exe文件
关于显示数据的弱问题
ListCtrl控件如何调整行高??
求助下面的问题,请进来看看。
谁能介绍点关于lib的资料的文章最好是中文的?
哪有D版的VC++6.0卖?
在VC中自定义了窗口,怎样保存下来?以便重装系统后在VC中能恢复我的自定义工具栏?
Essential C++ 中的练习2.1的解答为什么不能实现不断输入位置?
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-29610-3.html
无论中国谁当领导