主题:进程间通信-命名管道问题
多进程通信利用命名管道实现。。
MFC程序,,服务器可以同时接收和发送信息,客户端也可以同时接收和发送信息。
服务器:
在初始化时候创建一个线程
HANDLE CNAMEDPIPEDlg::hPipe==NULL; //这个是静态的
BOOL CNAMEDPIPEDlg::OnInitDialog()
{
hPipe=CreateNamedPipe("\\\\.\\pipe\\lwh",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE,PIPE_UNLIMITED_INSTANCES,1024,1024,0,NULL);
CreateThread(NULL,NULL,AcceptConnect,this,0,NULL);//新的线程
return TRUE;
}
AcceptConnect()
{
while(1)
{
ReadFile(hPipe); //循环读取数据
::Sleep(1000);
}
}
SendMessage()
{
WriteFile(hPipe) //发送数据
}
与客户端的交互中会出现卡住问题,个人认为是:循环过程中ReadFile会一直占据hPipe命名管道,所以在WriteFile(hPipe)才会出现两个函数同时使用hPipe 而导致。求高手帮忙解决。。
Socket编程中有一个函数是WSAAsyncSelect()用来接受信息。。
MFC程序,,服务器可以同时接收和发送信息,客户端也可以同时接收和发送信息。
服务器:
在初始化时候创建一个线程
HANDLE CNAMEDPIPEDlg::hPipe==NULL; //这个是静态的
BOOL CNAMEDPIPEDlg::OnInitDialog()
{
hPipe=CreateNamedPipe("\\\\.\\pipe\\lwh",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE,PIPE_UNLIMITED_INSTANCES,1024,1024,0,NULL);
CreateThread(NULL,NULL,AcceptConnect,this,0,NULL);//新的线程
return TRUE;
}
AcceptConnect()
{
while(1)
{
ReadFile(hPipe); //循环读取数据
::Sleep(1000);
}
}
SendMessage()
{
WriteFile(hPipe) //发送数据
}
与客户端的交互中会出现卡住问题,个人认为是:循环过程中ReadFile会一直占据hPipe命名管道,所以在WriteFile(hPipe)才会出现两个函数同时使用hPipe 而导致。求高手帮忙解决。。
Socket编程中有一个函数是WSAAsyncSelect()用来接受信息。。