易截截图软件、单文件、免安装、纯绿色、仅160KB

C程序传给C#程序数据包的问题.

问题: C#程序里面可以收到C程序传来的数据包.但是每次只有一个BYTE.无论C程序里面数据包长度大小是多少.

方案:

向C程序传递一个函数指针(C#中为委托)过去。

C#里面定义一个响应数据包的方法,将此方法封装在委托中,传给C程序,

C程序那里收到数据包时即可调用该方法。

C#启动C的服务-->C#向C程序注册函数指针-->C服务在适当的时候回调C#注册的该方法

C#程序
public delegate void dele_newPacket(Byte[] packet);

public static void newPacket(Byte[] packet)
{}

[DllImport("Win32-Server-DLL.dll", EntryPoint = "start_delegate")]
        public static extern void start_delegate(dele_newPacket packet);

CS_Console_1.Program.dele_newPacket packet = CS_Console_1.Program.newPacket;

CS_Console_1.Program.start_delegate(packet);

C代码:

void (_stdcall *dele_func)(BYTE* );//全局变量

void start_delegate(void(_stdcall *start_address )( BYTE* ) )
{
      printf("start_delegate call start:\n");
      dele_func = start_address;
      (*dele_func)((BYTE*)packet);//packet最长是1024BYTE
      printf("start_delegate call end:\n");
}

只要数据包正确传入C#程序就可以了,在C#里面进行数据包处理. 请帮忙啊.



相关问答:

两个C文件的问题

以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......

C#调用 C DLL问题,懂的来抢分了

//C 接口
extern "C"
{
  TESSDLL_API int __cdecl GetTessText(const char *imagefile, char *text);  
}
//我在C#中声明
//调用C DLL 中的函数
[DllImport("OCRapi.dll&quo ......

C/S程序在线自动更新问题,谢谢求教!

目前遇到的问题是:
存放在远程服务器端c/s程序一有更新,如何做到客户端立即响应弹出有最新升级的提示窗口。
本来有点思路:采用WCF+windowns服务+定时器的方式也能实现,但是每台客户端机子每隔都去访问一下远程 ......

用C或C++如何编写求解3D魔方程序 - C/C++ / C++ 语言

请问用C或C++如何编写求解3D魔方的程序,该从何开始?
谢谢各位,帮忙提点建议吧。

http://www.mofang.net/code/176/182/6581.html

我只能突破60秒!唉。

我刚过40秒

google的android中有个OpenGL ES + ......

如何查找系统未安装补丁C - C/C++ / 新手乐园

请问各位高手如何用C/C++获得系统未安装补丁
好像很专业的东西。。。

查注册表
每个补丁如果安装了都会在注册表里面登记

请问能不能更清晰些,我想用c\c++查出来,不好意思,我是新手。还望指教。谢

分值 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号