Calling a C# library from python

C#服务端:

NuGet

废话少说,直接代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CookComputing.XmlRpc;
using System.Net;
using System.Threading;

namespace XMLRPC
{
    public delegate void CallBackDelegate(string message);

    /// <summary>
    /// 该部件接受ida 调试数据,用显示分析
    /// listener.Prefixes.Add(@"http://*:11000/"); 需要管理权限
    /// </summary>
    public class IDAServer : XmlRpcService
    {
        private static XmlRpcListenerService _svc = new SimpleService();
        public static void Start(CallBackDelegate fn)
        {
            Thread sv = new Thread( Run);
            sv.Start(fn);

        }
        static void Run(Object fn )
        {
            HttpListener listener = new HttpListener();
        //    listener.Prefixes.Add(@"http://localhost:11000/");
            listener.Prefixes.Add(@"http://*:11000/");
            Thread.Sleep(1000);
            listener.Start();
            while (true)
            {
                HttpListenerContext context = listener.GetContext();
                XmlRpcListenerService svc = new SimpleService();
                ((SimpleService)svc).Host = (CallBackDelegate)fn;
                svc.ProcessRequest(context);
            }
        }
    }
    public class SimpleService : XmlRpcListenerService
    {
        [XmlRpcMethod("server.getStateName")]
        public string GetStateName(string stateNumber)
        {
            Host?.Invoke("Hi " + stateNumber);
            return "Hi " + stateNumber;
        }
        [XmlRpcMethod("server.hello")]    //即可写方法注解,也可写类注解,此为方法注解
        public string hello(string param)
        {
            Host?.Invoke(param);
            return "hello world " + param;
        }
       public  CallBackDelegate Host;
    }
}

 

在窗体程序承载服务 

private void button_Click(object sender, RoutedEventArgs e)
        {
            if (button.IsEnabled)
            {
                IDAServer.Start(svcMessage);
                button.IsEnabled = false;
                textBox.Text = textBox.Text + "\n IDAServer.Start()\n";
                
            }

        }

Python 客户端:

import xmlrpclib
Host = xmlrpclib.ServerProxy("http://192.168.2.2:11000")
words = Host.server.hello(" Client Message")
print "result:" + words

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值