[h5棋牌项目]-15-C#与C++通信

参考资料

C#与C++通信 https://blog.csdn.net/chihun_love/article/details/53944425

C#和C++的Socket通信 https://www.cnblogs.com/rainbow70626/p/8000984.html

C#与c++的通信 [问题点数:30分] https://bbs.csdn.net/topics/390314206?page=1

Windows下C++程序与C#程序间通信 https://wenku.baidu.com/view/5f7f7b2fed630b1c59eeb592.html

C++代码

#include <windows.h>
#include <iostream>
#include <tchar.h>
using namespace std;
int main()
{
	HANDLE h; 
	TCHAR * pipename=_T("\\\\.\\pipe\\testpipe"); //管道名,要跟服务器的一致
	//等待这个命名管道可用,确保服务器已经运行
	if (WaitNamedPipe( pipename, NMPWAIT_WAIT_FOREVER)==FALSE ){
		cout << "请先运行服务器!" << endl; 
		return 1;
	}
	//打开管道文件以便读写,实际上连接到命名管道服务器程序
	h=CreateFile(pipename, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ| FILE_SHARE_WRITE,NULL, OPEN_EXISTING, 
		FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_WRITE_THROUGH, NULL); 
	if (h!=INVALID_HANDLE_VALUE){
		char buf[100];
		DWORD len;
		if(ReadFile(h,buf,100,&len,NULL)){  //管道连接成功,从管道读取数据
			buf[len] = '\0';				//设置字符串结束标志,输出读取到的数据
			cout << buf << endl;
		}
		WriteFile(h,buf,len,&len,NULL);		//回送刚才读取的数据到服务器
		Sleep(3000);						//等待以便服务器取走回送的数据
		CloseHandle(h);						//关闭管道连接
	}
	return 0;
}

C#代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.IO;
using System.IO.Compression;
using Newtonsoft.Json.Linq;
using System.IO.Pipes;

namespace ConsoleApplication2
{
    class Program
    {
        static void test()
        {
            //创建命名管道
            NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe");
            //等待客户端连接
            pipeServer.WaitForConnection();
            Console.WriteLine("Client connected.");
            try
            {
                StreamWriter sw = new StreamWriter(pipeServer); //准备管道writer
                StreamReader sr = new StreamReader(pipeServer); //准备管道reader
                sw.AutoFlush = true;                            //设置写后自动刷新
                Console.Write("Enter text: ");                  //读取用户从键盘输入的数据发送到客户端
                sw.WriteLine(Console.ReadLine());
                Console.WriteLine("客户端回送的数据:" + sr.ReadLine());//读取客户端回传的数据
            }
            catch (IOException e)                               //异常处理
            {
                Console.WriteLine("ERROR: {0}", e.Message);
            }
        }

        static void Main(string[] args)
        {
            test();
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值