获取网卡名称:


代码:

<?php
/**
        获取机器网卡的物理(MAC)地址
        wwa  $Exp
**/
class GetMacAddr
{
        var $return_array = array(); // 返回带有MAC地址的字串数组
        var $mac_addr;
      
        function GetMacAddr($os_type)
        {
                switch ( strtolower($os_type) )
                {
                        case "linux":
                                $this->forLinux();
                                break;
                        case "solaris":
                                break;
                        case "unix":
                                break;
                        case "aix":
                                break;
                        default:
                                $this->forWindows();
                                break;
                }
              
                $temp_array = array();
                foreach ( $this->return_array as $value )
                {
                        if ( preg_match( "/[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f][:-]"."[0-9a-f][0-9a-f]/i", $value, $temp_array ) )
                        {
                                $this->mac_addr = $temp_array[0];
                                break;
                        }
                }
                unset($temp_array);
                return $this->mac_addr;
        }

        function forWindows()
        {
                @exec("ipconfig /all", $this->return_array);
                if ( $this->return_array )
                        return $this->return_array;
                else{
                        $ipconfig = $_SERVER["WINDIR"]."\system32\ipconfig.exe";
                        if ( is_file($ipconfig) )
                                @exec($ipconfig." /all", $this->return_array);
                        else
                                @exec($_SERVER["WINDIR"]."\system\ipconfig.exe /all", $this->return_array);
                        return $this->return_array;
                }
        }

        function forLinux()
        {
                @exec("ifconfig -a", $this->return_array);
                return $this->return_array;
        }
}
?>
<?php
$mac = new GetMacAddr(PHP_OS);
echo $mac->mac_addr;
?>


丰都sns

WEB2.0 jackxiang 2009-6-27 19:27
fd9xs.com

fdsns.com
来源:http://blog.21ic.com/user1/2613/archives/2008/48341.html
这个是单个,先弄懂,然后再弄懂多个,在该链接下面有少量的介绍
Asynchronous Input 异步输入模式

#i nclude <termios.h>    
#i nclude <stdio.h>      
#i nclude <unistd.h>      
#i nclude <fcntl.h>      
#i nclude <sys/signal.h>    
#i nclude <sys/types.h>      
      
#define BAUDRATE B38400      
#define MODEMDEVICE "/dev/ttyS1"      

#define _POSIX_SOURCE 1 /* POSIX compliant source */      
#define FALSE 0      
#define TRUE 1      

volatile int STOP=FALSE;
void signal_handler_IO (int status);   /* definition of signal handler */  
                                     // 定义信号处理程序
int wait_flag=TRUE;                   /* TRUE while no signal received */    
                                    // TRUE 代表没有受到信号,正在等待中  
main()   {        
int fd,c, res;  
struct termios oldtio,newtio;  
struct sigaction saio;        
/* definition of signal action */      
// 定义信号处理的结构
char buf[255];        

/* open the device to be non-blocking (read will return immediatly) */    
// 是用非阻塞模式打开设备 read 函数立刻返回,不会阻塞    
    fd = open(MODEMDEVICE, O_RDWR &#124; O_NOCTTY &#124; O_NONBLOCK);    
    if (fd <0) {perror(MODEMDEVICE); exit(-1); }        

/* install the signal handler before making the device asynchronous */    
    // 在进行设备异步传输前,安装信号处理程序    
    saio.sa_handler = signal_handler_IO;    
saio.sa_mask = 0;  
saio.sa_flags = 0;    
saio.sa_restorer = NULL;    
    sigaction(SIGIO,&saio,NULL);  

/* allow the process to receive SIGIO */
// 允许进程接收 SIGIO 信号      
fcntl(fd, F_SETOWN, getpid());    
    /* Make the file descriptor asynchronous (the manual page says only  
O_APPEND and O_NONBLOCK, will work with F_SETFL...) */  
// 设置串口的文件描述符为异步,man上说,只有 O_APPEND 和 O_NONBLOCK 才能使用F_SETFL
fcntl(fd, F_SETFL, FASYNC);        
tcgetattr(fd,&oldtio); /* save current port settings */  

    /* set new port settings for canonical input processing */  
// 设置新的串口为标准输入模式      
newtio.c_cflag = BAUDRATE &#124; CRTSCTS &#124; CS8 &#124; CLOCAL &#124; CREAD;      
newtio.c_iflag = IGNPAR &#124; ICRNL;    
newtio.c_oflag = 0;      
newtio.c_lflag = ICANON;  
newtio.c_cc[VMIN]=1;    
    newtio.c_cc[VTIME]=0;    
    tcflush(fd, TCIFLUSH);    
tcsetattr(fd,TCSANOW,&newtio);    

/* loop while waiting for input. normally we would do something      
useful here 循环等待输入,通常我们会在这里做些其它的事情 */
while (STOP==FALSE) {      
  printf(".\n");usleep(100000);        
  /* after receiving SIGIO, wait_flag = FALSE, input is availableand can be read */
  // 在收到 SIGIO 信号后,wait_flag = FALSE, 表示有输入进来,可以读取了
  if (wait_flag==FALSE) {        
   res = read(fd,buf,255);    
   buf[res]=0;        
   printf(":%s:%d\n", buf, res);  
   if (res==1) STOP=TRUE; /* stop loop if only a CR was input */    
   wait_flag = TRUE;      /* wait for new input 等待新的输入*/  
       }      
  }      
/* restore old port settings */    
tcsetattr(fd,TCSANOW,&oldtio);  
}            

/***************************************************************************    
* signal handler. sets wait_flag to FALSE, to indicate above loop that    *
* characters have been received.                                          *
***************************************************************************/  

// 信号处理函数,设置 wait_flag 为 FALSE, 以告知上面的循环函数串口收到字符了  
void signal_handler_IO (int status)   {  
printf("received SIGIO signal.\n");    
wait_flag = FALSE;  
}





nslookup查看mx记录:
nslookup -query=mx cntv.cn
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
cntv.cn mail exchanger = 10 mxcom.263xmail.com.
cntv.cn mail exchanger = 5 mxwcom.263xmail.com.

------------------------------------------------------------------------------------
nslookup -query=mx "smtp.staff.cntv.cn"
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
smtp.staff.cntv.cn      canonical name = smtpcom.263xmail.com.

Authoritative answers can be found from:
263xmail.com
        origin = ns.capital-online.com.cn
        mail addr = root.ns.capital-online.com.cn
        serial = 28436
        refresh = 1800
        retry = 300
        expire = 604800
        minimum = 86400
________________________________________________

Linux windows 通用:
nslookup
set q=mx
163.com


windows下:
nslookup -qmx "163.com"

_______________________________________________

nslookup -query=mx "163.com"
Server:         114.114.114.114
Address:        114.114.114.114#53

Non-authoritative answer:
163.com mail exchanger = 50 163mx00.mxmail.netease.com.
163.com mail exchanger = 10 163mx02.mxmail.netease.com.
163.com mail exchanger = 10 163mx01.mxmail.netease.com.
163.com mail exchanger = 10 163mx03.mxmail.netease.com.

可以看到163.com的MX记录为mx.mail.163.split.netease.com,并且将列出该MX记录对应的IP。
  如果该命令没有返回正确的MX记录或者IP,则有可能是您的网络问题或DNS配置错误造成无法向网易邮箱发信,请先联系您的DNS管理员进行解决。
把2个串口用交叉线连起来,假设两个串口分别为/dev/ttyS0和/dev/ttyS1,则能直接在一个shell执行cat /dev/ttyS0,然后在另外一个shell 执行echo "test." >/dev/ttyS1,如果两个串口都是好的,则执行cat /dev/ttyS0会输出’test."如果不行,则可用cat /proc/interrupts看一下是否产生了中断,也可用setserial查看串口设置。

编者按:2009年是计算机专业考研专业基础课首次实行全国统考,面对今年的改变,想报考计算机专业的考生可能对复习的准备有很多的疑问。为了帮助考生正确的做好准备工作,学赛网研究生院特访问了我国著名的计算机教育专家、湖南师范大学计算机软件与理论/计算机应用技术硕士点专业课试题命题人张友生博士,请张博士对考试大纲进行全面的解析。本文为大纲解析的第四篇:计算机网络知识点分析。

从 2009年起,计算机专业考研实行计算机学科专业基础综合课全国统考,考试内容涵盖数据结构、计算机组成原理、操作系统和计算机网络等学科专业基础课程。试卷内容的结构是:数据结构45分(占30%),计算机组成原理45分(占30%),操作系统35分(占23%),计算机网络25分(占17%)。计算机网络部分分值也占有不小的份额,要求考生以平等的心态去对待。阅读全文
http://linuxdesktop.cn/2007/04/13/use-wine-ies4linux-to-install-ie6.html

suse11.2:

/lib/modules/2.6.31.5-0.1-desktop/kernel/drivers/usb/serial/ch341.ko



哈哈,原来我的mandrake10自动就可以识别这个设备,不用另外的驱动程序,估计2.6的内核都应该没问题:
首先把usb转串口线插上然后用dmesg &#124; grep usb查找如果看到:
“drivers/usb/serial/usb-serial.c: USB Serial support registered for Generic”
就说明设备已被识别,然后往下看
drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303
usb 2-2: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
说明我的usb转串口芯片是PL-2303,对应系统设备是 dev/usb/tts/0,最后只需在minicom配置文件里将端口改成/dev/usb/tts/0就可以使用了:)


在Windows下可以使用超级终端来连接交换机和路由器等工业设备,而且在Windows下使用usb转串口的线也有相应的驱动,但是如何在Linux下使用呢?
  首先要有一个Linux下的终端软件叫minicom如果没有装这个的朋友可以到自己的源中去下载,然后你就要插上你的usb转串口的线,在Linux下Usb转串口的线几乎不需要驱动,你插上以后在你的dev的目录下应该会有一个ttyUSB0的文件,如果有那么恭喜你了,你的这根线现在是可用的了。进入到终端输入su以root用户进行登录,使用minicom必须要用root用户,然后输入minicom -s 进行设置,进入设置界面以后你会看到有几个选项,分别是:
  Filename and Paths, File transfer and protocols, Serial port setup, Modem and dialing, Screen and keyboard, Save setup as df1, Save setup as...... , Exit from minicom
  进入Serial port setup
  将第一项改成 A—Serial Device : /dev/ttyUSB0
  第二项:B—lockfile Location: /var/lock
  第五项:E—Bps/par/Bits :57600(这里要注意,这个值要改成你的连接的设备的波特率,我这里的是57600)
  第七项:F—Hardware Flow Control: yes
  然后退出进入Modem and dialing
  将A—initing string B-Rest string K-Hang-up string 这三项的值去掉。
  然后退出选择 Save as df1,然后选择EXIT FROM MINICOM 到这里的终端已经设置好了。
  接下来你就可以将你的串口线接上设备,然后在终端下输入minicom就可以对设备进行调试了。
从网上查找资料从而得出的,参考资料:

http://www.cnitblog.com/201/archive/2008/01/31/5813.html计算机的串口不能用,怎么与目标板的串口连接呢?


http://www.okeve.com/System/Linux/20071130/31118.htmlLinux系统下使用USB转串口连接工业设备

http://www.oklinux.cn/html/Basic/jyjq/20080317/49447.htmlVMware技巧:在Minicom下启动Linux系统


1、打开Vmware workstation ,单击菜单栏上的VM下的setting,进入virtual machine setting对话框


2、单击add,添加serial port,依此下一步,直到完成为止。


3、连接好开发板,打开linux虚拟机,进入终端输入minicom –s,进入minicom的设置模式。


a) 检查是否存在设备/dev/ttyUSB0,如果没有就建立一个:
         mknod /dev/ttyUSB0 c 188 0
       选择串口:在选择菜单中的“Serial port setup”,按回车,再按“A”以设置 “Serial Device”/dev/ttyUSB0(注意其中的USB是大写),按回车返回。


b)设置波特率:按“E”键进入设置“bps/par/Bits”(波特率)界面,如果按“I”以设置波特率为115200,按回车返回。 (我使用的是2440的板子)

c)数据流控制:按“F”键设置“Hardware Flow Control”为“NO”.


其它为缺省设置,然后按回车到串口设置主菜单,选择“Save setup as df1”,按回车键保存刚才的设置(保存到“/etc/vminirc.df1”),再选择“Exit”退出设置模式,回到minicom操作模式。此时可像Windows下的超级终端一样使用了。



在最后使用时,XP和linux只能有一个终端可以使用,二者不能同时使用!所以在vmware的状态下,要让linux识别串口的存在,需要重新拔插USB串口!
    一个贪官在狱中写给儿子的信
阅读全文
生活就时间仍在 是我们飞逝

人犯错误 大半是该用真情时太过动脑筋 而在该用脑筋时又太感情用事

生活就是让弱者感觉无奈 让强者感觉无聊的游戏

喜欢的人不出现, 出现的人不喜欢 是让弱者感觉无奈 让强者感觉无聊的游戏

回忆未来  20:12:12
生活就是让弱者感觉无奈 让强者感觉无聊的游戏 这句我看不懂后面的。
王官文  20:12:52
太强了所以无聊,没有追求了吧
回忆未来  20:14:12
时间仍在 是我们飞逝 这个如何解释
王官文  20:15:57
经常感叹时间飞逝,其实是我们老得快,时间只不过是一个永恒的概念,不管怎么样,时间就是时间,但是你就不是以前的你
    public function getMoreCount($fromuid,$invitetype,$group){
      $invArray = explode(',',$invitetype);
      foreach($invArray as $key => $value){
        $mckey[] = "inv_{$fromuid}_{$group}_{$value}";
      }
      if (TRUE === $this->getMcHandle())
      {
        if (FALSE === ($re = $this->newMemHandle->get($mckey)))
        {
          return false;
        }
        return  $re;
      }
      return false;
    }

我想把现有的图像(比如:一个点)从作图区的左边移到右边,怎么实现?

我用过expose_event,通过画点 --> 用矩形填充 --> 再在新的位置画点... ... ,但是这样最终貌似只有最终的效果图(要么是矩形,要么是右侧的点),没有中间的动态过程。

向大家请教~~!

下面是一个画正弦曲线的例子,请教大家如何将画曲线的过程动态的显示出来呢?
代码:
#include
#include
static gint expose_event(GtkWidget *widget, GdkEventExpose *event)
{
  int i;
  GdkGC *gc;
  GdkColormap *colormap;
  GdkColor color;

  gc=gdk_gc_new(widget->window);
  colormap=gtk_widget_get_colormap(widget);
  gdk_color_parse("red",&color);
  gdk_color_alloc(colormap,&color);
  gdk_gc_set_foreground(gc,&color);

  /*画正弦曲线*/

  for(i=1;i<400;i++)
  {
        
          gdk_draw_line(widget->window,gc,i,200+100*sin(6.28*i/400),i+1,200+100*sin(6.28*(i+1)/400));
      
  }
  gdk_gc_unref(gc);
  return FALSE;
}

int main(int argc,char **argv)
{
  GtkWidget *win_main, *draw_area;

  gtk_init(&argc,&argv);

  win_main=gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_widget_set_usize(win_main,400,400);

  draw_area = gtk_drawing_area_new();
  gtk_container_add(GTK_CONTAINER(win_main), draw_area);
  gtk_widget_show(draw_area);

  gtk_signal_connect(GTK_OBJECT(draw_area), "expose_event",
                    (GtkSignalFunc) expose_event, NULL);
  gtk_signal_connect (GTK_OBJECT (win_main), "destroy",
  GTK_SIGNAL_FUNC (gtk_exit), NULL);

  gtk_widget_set_events(draw_area, GDK_EXPOSURE_MASK);

  gtk_widget_show(win_main);

  gtk_main();
  return 0;
}

realtang   08-02-03 09:50
This is an event signal, initially emitted when the connected widget becomes fully visible on screen.
Expose events are also generated when a widget has been partially or fully covered by another widget, and is re-exposed.
expose事件只是widget被遮挡后重新出现才发生的或者第一次出现时发生。
在你的这个例子里面,你的这个draw_area在出现在屏幕上以后,才会去调用expose_event函数。
而且事件处理函数都应该是很快执行完的,因为所有的GUI都在一个线程里面,如果像你要求的显示画的过程,那就把其它事件都给阻塞了。
不过你可以采用gtk_widget_queue_draw_area()强制产生expose事件。
另外要补充的,现在的gc就在widget的style对象中,所以不需要new了。
如果要清空memcache的items,常用的办法是什么?杀掉重启?如果有n台memcache需要重启怎么办?挨个做一遍?

很简单,假设memcached运行在本地的11211端口,那么跑一下命令行:
$ echo ”flush_all” | nc localhost 11211

注:flush并不会将items删除,只是将所有的items标记为expired。
也可以这样:
[/usr/local/apache2/*/vhost.d]# telnet 172.25.*.70 12000
Trying 172.25.38.70...
Connected to 172.25.38.70.
Escape character is '^]'.
flush_all
OK

FROM: http://willj.net/blog/2008/06/10/flushing-memcached-servers-the-easy-way/
计算机的串口不能用,怎么与目标板的串口连接呢?


windows下可以用USB转串口线实现,在google上搜索了一下,linux下更简单,连驱动都免装!
测试环境:redhat linux fedora core 4

总结如下:

1. 检查是否存在设备/dev/ttyUSB0,如果没有就建立一个:
mknod /dev/ttyUSB0 c 188 0

以下推理未测试:
如果有多个USB口,可以类推,建立/dev/ttyUSB[1-n],注意从设备号要累加,
如:mknod /dev/ttyUSB[1-n] c 188 [1-n]

2. 启动minicom, 设置串口设备为 /dev/ttyUSB0, 再设置波特率/数据位/停止位,保存为缺省配置df1

3. 重启minicom, 复位目标板,看是否有打印信息?
如果没有请确认:a)USB/串口线没问题,b)确认你使用的USB口是第一个(一个个的试吧,一般电脑不会标示出来)
http://www.douban.com/subject/1314262/
http://www.douban.com/subject/1288844/
分页: 246/339 第一页 上页 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 下页 最后页 [ 显示模式: 摘要 | 列表 ]