原文链接:http://www.myexception.cn/vc-mfc/304571.html

 

命名管道不能实现局域网内通信,该怎么处理

 
www.MyException.Cn  网友分享于:2015-08-26  浏览:157次
 
 
 
 
命名管道不能实现局域网内通信
服务器端创建命名管道:

hPipe=CreateNamedPipe("\\\\.\\pipe\\MyPipe",
PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,
0,1,1024,1024,0,NULL);
if(hPipe==INVALID_HANDLE_VALUE)
{
MessageBox("Failed to create named pipe!");
hPipe=NULL;
return;
}
HANDLE hEvent;
hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
if(!hEvent)
{
MessageBox("Failed to create event!");
CloseHandle(hPipe);
hPipe=NULL;
return;
}

OVERLAPPED ovlap;
ZeroMemory(&ovlap,sizeof(OVERLAPPED));
ovlap.hEvent=hEvent;

if(!ConnectNamedPipe(hPipe,&ovlap))
{
if(GetLastError()!=ERROR_IO_PENDING)
{
MessageBox("Failed to wait for client!");
CloseHandle(hPipe);
CloseHandle(hEvent);
hPipe=NULL;
return;
}
}

if(WaitForSingleObject(hEvent,INFINITE)==WAIT_FAILED)
{
MessageBox("Failed to wait for event!");
CloseHandle(hPipe);
CloseHandle(hEvent);
hPipe=NULL;
return;
}
CloseHandle(hEvent);

客户端创建命名管道:


if(!WaitNamedPipe("\\\\UT\\pipe\\MyPipe",NMPWAIT_WAIT_FOREVER))
{
MessageBox("No available pipe!");
return;
}
hPipe=CreateFile("\\\\UT\\pipe\\MyPipe",GENERIC_READ|GENERIC_WRITE,
0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hPipe==INVALID_HANDLE_VALUE)
{
MessageBox("Failed to open named pipe!");
hPipe=NULL;
return;
}

其中UT为服务器主机名。以上两个程序是照孙鑫的《VC++深入详解》抄的。

把这两个程序都放在同一个机子上可以通信。但放在局域网的两个主机上就不能通信了,请问为什么?错在哪?

------解决方案--------------------
看似乎否有防火墙等拦截.. 
------解决方案--------------------
代码似乎没看出什么问题 
------解决方案--------------------

我试验的结果是,如果直接连,很可能连不上,
但如果你用 win键 + R ,然后输入目标机器地址,手动连接到目标机器上
然后再运行程序就可以连上了 
------解决方案--------------------
先与目标机器建立IPC连接试试看
一种办法是在程序中执行命令
net use \\ip\\ipc$ password /user:user  
user和password是你用于访问的用户名和密码
另一种办法是用下面的程序建立IPC连接
C/C++ code
BOOL ConnetIPC(char * RemoteName,char * User,char * PassWord) 
{ 
  char tmp[128]="\\\\"; 
 strcat(tmp,RemoteName); 
 strcat(tmp,"\\ipc$"); 
 NETRESOUCE NetResouce; 
 NetResouce.lpRemoteName=tmp; 
 NetResouce.dwType=RESOURCETYPE_ANY; 
 NetResouce.lpProvider=NULL; 
 if (WnetAddConnection2(&NetResouce,PassWord,User,FLASE)==NO_ERROR) 
  //建立连接! 
  return FALSE; 
 else 
  return TRUE; 
}

------解决方案--------------------
C/C++ code
    SECURITY_ATTRIBUTES     sa;
    SECURITY_DESCRIPTOR     sd;

    if( InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION) )
    {
// add a NULL disc. ACL to the
// security descriptor.
        if (SetSecurityDescriptorDacl(&sd, TRUE, (PACL) NULL, FALSE))
        {
            sa.nLength = sizeof(sa);
            sa.lpSecurityDescriptor =&sd;
            sa.bInheritHandle = TRUE;

            //在这里
            CreateNamedPipe(.......&sa);
        }
            
}






posted @ 2019-04-20 12:52 huhu0013 阅读(718) 评论(0) 推荐(0) 编辑
摘要: 原文链接: http://blog.sina.com.cn/s/blog_8ebff8d7010121tm.html 1.HC(S)08系列 开发机硬件:USB-ML-12 CYCLONE PRO USB-ML-UNIVERSAL USB-ML-UNIVERSAL FX 支持发软件:烧录软件 PRO 阅读全文
posted @ 2019-01-20 10:15 huhu0013 阅读(3498) 评论(0) 推荐(0) 编辑
摘要: 原文链接: http://blog.csdn.net/mrzhang_happy/article/details/53065987 目的: 不FQ,不适用vpn之类的工具就能在线更新Android SDK,并且速度相当快。 原理: 不管是Android Studio也好还是Eclipse本方法都使用 阅读全文
posted @ 2016-12-25 16:02 huhu0013 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 原文链接: http://www.techug.com/https-ssl-tls要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识。1. 大致了解几个基本术语(HTTPS、SSL、TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”)3. 大致了解... 阅读全文
posted @ 2015-12-25 10:32 huhu0013 阅读(387) 评论(0) 推荐(0) 编辑
摘要: Source: http://www.0xebfe.net/blog/2013/01/13/how-to-create-an-anonymous-ida-pro-database-dot-idb/Probably it’s not secret for you that every .IDB fil... 阅读全文
posted @ 2015-12-08 17:13 huhu0013 阅读(818) 评论(0) 推荐(0) 编辑
摘要: 原文作者:海风月影_百度空间vmp里面只有1个逻辑运算指令 not_not_and 设这条指令为PP(a,b) = ~a & ~b这条指令的神奇之处就是能模拟 not and or xor 4条常规的逻辑运算指令怕忘记了,直接给出公式,后面的数字指需要几次P运算not(a) = P(a,a) 1an... 阅读全文
posted @ 2015-09-24 15:02 huhu0013 阅读(1040) 评论(0) 推荐(0) 编辑
摘要: 原文链接: http://jingyan.baidu.com/article/d3b74d64aa4a6a1f77e60932.html1.以管理员身份运行UltraISO,点击“文件”菜单下的“打开”按钮,打开已准备好的ISO镜像文件。2.选择“启动”→“写入硬盘镜像”。写入前保证U盘上面的文件已... 阅读全文
posted @ 2015-09-18 11:48 huhu0013 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://blog.csdn.net/star_huang/article/details/7678845最近Eclipse调试时总是出现Application XXX is waiting for the debugger to attach的提示,有的时候提示框会自动关闭并进入调试... 阅读全文
posted @ 2015-09-11 17:44 huhu0013 阅读(2073) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://blog.csdn.net/kkxgx/article/details/19850509通常数字证书包含很多信息,其中N和E值即我们称为的公钥。如何从PEM 或者DER格式的证书中提出证书呢?下面给出代码实现从PEM和DER编码的证书中提出N、E。[cpp]view plai... 阅读全文
posted @ 2015-09-09 14:26 huhu0013 阅读(16360) 评论(0) 推荐(0) 编辑
摘要: 原文链接:http://blog.chinaunix.net/uid-16515626-id-2741894.html由于项目需要,我计划利用openssl开发一个基本的CA,实现证书的发放等功能。在项目模型中公私钥对是用户自己产生的,并且以16进制数的形似提交给CA。我们知道,通常利用openss... 阅读全文
posted @ 2015-09-09 14:21 huhu0013 阅读(14666) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示