一段C代码转C#

linwu 2007-01-31 12:23:32
不懂C。。。下面代码能转成C#吗。。望指点指点。。拜谢
------

long mac_addr_sys ( u_char *addr)
{
struct ifreq ifr,*IFR;
struct ifconf ifc;
char buf[1024];
int s,i;
int ok = 0;

s = socket(AF_INET, SOCK_DGRAM, 0);
if (s==-1) {
return -1;
}

ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
ioctl(s, SIOCGIFCONF, &ifc);

IFR = ifc.ifc_req;
for (i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; IFR++) {

strcpy(ifr.ifr_name, IFR->ifr_name);
if (ioctl(s, SIOCGIFFLAGS, &ifr) == 0) {
if (! (ifr.ifr_flags & IFF_LOOPBACK)) {
if (ioctl(s, SIOCGIFHWADDR, &ifr) == 0) {
ok = 1;
break;
}
}
}
}

close(s);
if (ok) {
bcopy( ifr.ifr_hwaddr.sa_data, addr, 6);
}
else {
return -1;
}
return 0;
}



int checkserial()
{
long stat;
int i;
FILE *fp;
char password[19],new_pass[19];
u_char addr[6];
long encrypt[6];

memset(encrypt,0,sizeof(encrypt));
memset(password,0,sizeof(password));
memset(new_pass,0,sizeof(new_pass));

fp = fopen("/usr/sbin/serial.no","r");
if( fp == NULL ){
printf("Open the serial.no file error!\n");
return -1;
}
fread(password,1,18,fp);

stat = mac_addr_sys(addr);
if (0 == stat) {
encrypt[0] = addr[0]*0x01 + addr[1];
encrypt[1] = addr[1]*0x02 + addr[2];
encrypt[2] = addr[2]*0x03 + addr[3];
encrypt[3] = addr[3]*0x05 + addr[4];
encrypt[4] = addr[4]*0x07 + addr[5];
encrypt[5] = addr[5]*0x0b + addr[0];
sprintf(new_pass,"%3.3x%3.3x%3.3x%3.3x%3.3x%3.3x",encrypt[0],encrypt[1],encrypt[2],encrypt[3],encrypt[4],encrypt[5]);
}
else {
return -1;
}

if( strcmp(password,new_pass) == 0 ){
return 0;
}
return -1;
}

;;;;定义加密函数


int main(int argc, char *argv[])
{
int c;
char filename[80] = "";
char hostname[MAXHOSTNAMELEN]="";
char tmp[80];
char * xarg = NULL;
int x;
FILE *f;
sigset_t sigs;
int num;
char *buf;
char *runuser=NULL, *rungroup=NULL;

##开始调用
struct pollfd silly_macos[1];
if( checkserial() != 0 ){
printf("Check serial error!\n");
return 0;
}
。。。。。



末尾

/* Do nothing */
for(;;)
poll(silly_macos,0, -1);
return 0;
}
...全文
301 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cengyidao 2007-01-31
  • 打赏
  • 举报
回复
C++代码,当然可以转换成C#代码了.
jxufewbt 2007-01-31
  • 打赏
  • 举报
回复
把它编译成dll,然后直接用C#调用。
lovehongyun 2007-01-31
  • 打赏
  • 举报
回复
关注..
Henhen2000 2007-01-31
  • 打赏
  • 举报
回复
即使转出来变化也是很大的,你既然不懂C#还转干什么呢?如果你想写C#代码的话,不妨先学学C#网络方面的通讯,会有帮助的。
sdl2005lyx 2007-01-31
  • 打赏
  • 举报
回复
lz:动态库,这个你懂吧,你用VC把原来的代码编译成动态库,由net来调用.如:
[DllImport("User32.dll")]
public static extern IntPtr FindWindowEx(IntPtr parent, IntPtr child, string strClass, string strWinow);

还有一种办法:写成COM的组件,直接引用到net工程引用.
linwu 2007-01-31
  • 打赏
  • 举报
回复
jxufewbt(我的目标是5星) ( ) 信誉:105 Blog 2007-01-31 12:35:11 得分: 0


把它编译成dll,然后直接用C#调用。


----
能否详细点?
wanghui0380 2007-01-31
  • 打赏
  • 举报
回复
不是很难,取mac地址,按位于输入的序列号进行运算,如此而已

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧