<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>五四陈科学院-坚信科学，分享技术 &#187; mynet</title>
	<atom:link href="http://www.54chen.com/tag/mynet/feed" rel="self" type="application/rss+xml" />
	<link>http://www.54chen.com</link>
	<description>PHP、JAVA、缓存、架构、经验、分享</description>
	<lastBuildDate>Fri, 10 Feb 2012 12:21:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>[54陈科学院]802.1x源代码下载</title>
		<link>http://www.54chen.com/life/54%e9%99%88%e7%a7%91%e5%ad%a6%e9%99%a28021x%e6%ba%90%e4%bb%a3%e7%a0%81%e4%b8%8b%e8%bd%bd.html</link>
		<comments>http://www.54chen.com/life/54%e9%99%88%e7%a7%91%e5%ad%a6%e9%99%a28021x%e6%ba%90%e4%bb%a3%e7%a0%81%e4%b8%8b%e8%bd%bd.html#comments</comments>
		<pubDate>Tue, 05 May 2009 14:13:57 +0000</pubDate>
		<dc:creator>cc0cc</dc:creator>
				<category><![CDATA[生活备份]]></category>
		<category><![CDATA[802.1x]]></category>
		<category><![CDATA[mynet]]></category>
		<category><![CDATA[源代码]]></category>

		<guid isPermaLink="false">http://www.54chen.com/life/54%e9%99%88%e7%a7%91%e5%ad%a6%e9%99%a28021x%e6%ba%90%e4%bb%a3%e7%a0%81%e4%b8%8b%e8%bd%bd.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>免责声明： 本程序仅供学习编程使用，非商业用途，所有分析过程均遵循《中华人民共和国计算机软件保护条例》。 功能： mynet是我在大学时期在xdkui老兄的vc源码参考下，完成的一套gnome程序，它解决了linux下802.1x拔号上网问题，同时友好的界面能使你轻松使用。 截图： 代码分析： [中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part1） [中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part2） [中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part3）关键逻辑 [中秋零献续集] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part4）getaccess线程内的故事 索取代码，请猛击此处进入此页面留下邮箱。<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>免责声明：</p>
<p>本程序仅供学习编程使用，非商业用途，所有分析过程均遵循《中华人民共和国计算机软件保护条例》。</p>
<p>功能：</p>
<p>mynet是我在大学时期在xdkui老兄的vc源码参考下，完成的一套gnome程序，它解决了linux下802.1x拔号上网问题，同时友好的界面能使你轻松使用。</p>
<p>截图：</p>
<p><img class="alignnone size-full wp-image-570" title="2" src="http://www.54chen.com/wp-content/uploads/2009/05/2.gif" alt="" width="500" height="361" /></p>
<p>代码分析：</p>
<p><a href="http://www.54chen.com/c/65">[中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part1）</a></p>
<p><a href="http://www.54chen.com/c/69">[中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part2）</a></p>
<p><a href="http://www.54chen.com/c/71">[中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part3）关键逻辑</a></p>
<p><a href="http://www.54chen.com/c/73">[中秋零献续集] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part4）getaccess线程内的故事</a></p>
<p>索取代码，请猛击<a href="http://www.54chen.com/8021x">此处</a>进入此页面留下邮箱。</p>
<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/life/54%e9%99%88%e7%a7%91%e5%ad%a6%e9%99%a28021x%e6%ba%90%e4%bb%a3%e7%a0%81%e4%b8%8b%e8%bd%bd.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[中秋零献续集] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part4）getaccess线程内的故事</title>
		<link>http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae%e7%bb%ad%e9%9b%86-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3.html</link>
		<comments>http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae%e7%bb%ad%e9%9b%86-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3.html#comments</comments>
		<pubDate>Sat, 01 Nov 2008 02:12:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[802.1x]]></category>
		<category><![CDATA[mynet]]></category>
		<category><![CDATA[神州数码]]></category>

		<guid isPermaLink="false">http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae%e7%bb%ad%e9%9b%86-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>/*** * Author: cc0cc * E-mail: cc0cc@126.com * WebSite: http://www.54chen.com * Date: 11 01 2008 * FileName: Mythread.c * 这个文件要从Access_Thread看起，因为在上一章节里，我们了解了 pthread_create(&#38;getaccess,NULL,Access_Thread,NULL);创建了一个叫getaccess的线程，正是运行的Access_Thread，在Access_Thread里，将完成一系列的过程，802.1x从这里才真正开始了。 ***/ #include &#60;gnome.h&#62; #include &#60;sys/select.h&#62; #include "Mythread.h" #include "connect.h" #include "support.h" #include "interface.h" int i=0; typedef struct{                   long    &#8230;<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>/***<br />
* Author: cc0cc<br />
* E-mail: cc0cc@126.com<br />
* WebSite: <a href="http://www.54chen.com">http://www.54chen.com</a><br />
* Date: 11 01 2008<br />
* FileName: Mythread.c<br />
* <span style="font-size: medium; color: #ff0000;">这个文件要从Access_Thread看起</span>，因为在上一章节里，我们了解了 pthread_create(&amp;getaccess,NULL,Access_Thread,NULL);创建了一个叫getaccess的线程，正是运行的Access_Thread，在Access_Thread里，将完成一系列的过程，802.1x从这里才真正开始了。<br />
***/<br />
#include &lt;gnome.h&gt;<br />
#include &lt;sys/select.h&gt;<br />
#include "Mythread.h"<br />
#include "connect.h"<br />
#include "support.h"<br />
#include "interface.h"</p>
<p>int i=0;<br />
typedef struct{<br />
                  long    tv_sec;        <br />
                  long    tv_uec;       <br />
              }timeval;<br />
           <br />
gint<br />
keeplink(gpointer data)<br />
{<br />
pthread_t keeptest;<br />
    fd_set readfds;<br />
    timeval timeout={5,0};//设置超时<br />
    BYTE recvbuf[1024];<br />
    BYTE cmd;<br />
    CMD_RECORD *cmd_record;<br />
    int recvlen;<br />
    int index=0;<br />
    BYTE tmp=0;<br />
    send_keeplink_request();//这也在connect.c里，用来构造一个包含指令和验证信息的包并发给服务器<br />
    FD_ZERO(&amp;readfds);<br />
    FD_SET(sockfd, &amp;readfds);<br />
    if(1!=select(sockfd + 1,&amp;readfds,NULL,NULL,&amp;timeout))<br />
    {//超时<br />
        Acc_Keep_Link=2;<br />
        g_message("1.keep lost,thread keeptest ok!");<br />
        pthread_create(&amp;keeptest,NULL,Keep_Thread,NULL);<br />
        return FALSE;<br />
    }<br />
    recvlen=recvfrom(sockfd,(char *)recvbuf,sizeof(recvbuf),0,NULL,NULL);<br />
    if (recvlen==-1 ) {<br />
                    Acc_Keep_Link=2;<br />
                    pthread_create(&amp;keeptest,NULL,Keep_Thread,NULL);<br />
                    g_message("2.keep lost,thread keeptest ok!");<br />
                    return FALSE;<br />
    }<br />
    amt_decrypt(recvbuf,recvlen);//与认证过程大同小异<br />
    if(0==check_packet(recvbuf,recvlen))<br />
    {<br />
                    Acc_Keep_Link=2;<br />
                    pthread_create(&amp;keeptest,NULL,Keep_Thread,NULL);<br />
                    g_message("3.keep lost,thread keeptest ok!");<br />
                    return FALSE;<br />
    }<br />
    cmd_record=get_attr(recvbuf);<br />
    cmd=*recvbuf;<br />
    if(cmd==4)    //收到send_keeplink_request对应的包<br />
    {<br />
        index=0;<br />
        tmp=0;<br />
        for (;(index&lt;8)&amp;&amp;(attr_id[index]);index++) {<br />
            if (attr_id[index]==3) {<br />
                if (attr_val[8*(index+4*index)]!=1) {//发送send_keeplink_request失败<br />
                    Acc_Keep_Link=2;<br />
                    pthread_create(&amp;keeptest,NULL,Keep_Thread,NULL);<br />
                    g_message("4.keep lost,thread keeptest ok!");<br />
                    return FALSE;<br />
                }<br />
            }<br />
        }<br />
        //AfxGetMainWnd()-&gt;PostMessage(WM_KEEPLINK_RESULT,KEEPLINK_SUCCESSED,NULL);<br />
        g_message("keeplink result success");<br />
    }<br />
    else<br />
    {<br />
                    Acc_Keep_Link=2;<br />
                    pthread_create(&amp;keeptest,NULL,Keep_Thread,NULL);<br />
                    g_message("5.keep lost,thread keeptest ok!");<br />
                    return FALSE;<br />
    }<br />
return TRUE;//至此 全过程结束（当然，你不是按照从上到下读着来的，而是按照我的提示来阅读的话） 未来我会逐步分析connect.c和mdd.c里的几个函数，都是加密和解密的内容，主程序本身的流程关系不大，其中还包含了linux c中使用ASM的方法，敬请关注http://hi.baidu.com/cc0cc<br />
}</p>
<p>void<br />
Link_Thread(void *arg)<br />
{<br />
guint send_timer;<br />
if(Acc_Keep_Link!=1)return;<br />
g_message("keep thread online!");<br />
send_timer=gtk_timeout_add(30000,keeplink,NULL);//802.1x了，每三十秒发送一个认证请求 看keeplink<br />
}<br />
<strong><span style="font-size: large; color: #ff0000;">从这里看起↓</span></strong><span style="font-size: large; color: #ff0000;"><strong><br />
</strong></span>void<br />
Access_Thread()<br />
{<br />
if(Acc_Keep_Link!=0)return;//这是个全局的标，任何情况下标被修改都应当退出线程<br />
pthread_t keeplink;//这是一个孙线程的名字，根据协议规则需要在认证通过后定时发包<br />
int times=0;//超时次数<br />
fd_set readfds;//这个东东不知道要去补一下网络编程，<span>异步套接字。文件描述符集，select调用时用的</span><br />
timeval timeout;//设置超时为5秒 这个timeval struct在本文件有定义<br />
timeout.tv_sec=5;<br />
timeout.tv_uec=0;<br />
FD_ZERO(&amp;readfds);<br />
FD_SET(sockfd, &amp;readfds);   </p>
<p>BYTE recvbuf[1024];<br />
BYTE cmd;<br />
CMD_RECORD *cmd_record;<br />
int recvlen;<br />
int index=0;<br />
BYTE tmp=0;</p>
<p>   <br />
retry://这里没办法，用了个goto 看后面就知道了，大概就是超时两次就置标志位了，最后结束运行<br />
        if (times&gt;=2) {<br />
        Acc_Keep_Link=-1;//ACCESS_FAILED_TIMEOUT;<br />
        return ;<br />
    }<br />
send_access_request();//这是开始发送包给服务器了，将会发送用户名密码MAC等一系列的东西给远端的服务器，另一个文件中（connet.c）将专门来介绍</p>
<p>int rt=select(sockfd + 1,&amp;readfds,NULL,NULL,&amp;timeout);//等着看有没有返回<br />
//g_message("select id :%d",rt);<br />
if(1!=rt)<br />
    {//超时<br />
        g_message("time out this");<br />
        times++;<br />
        goto retry;<br />
    }<br />
//有返回了！<br />
recvlen=recvfrom(sockfd,(char *)recvbuf,sizeof(recvbuf),0,NULL,NULL);//接受返回<br />
    if (recvlen==-1) {<br />
        g_message("recvfrom faild");<br />
       <br />
    }<br />
    amt_decrypt(recvbuf,recvlen);//将收到的recvbuf里的东西去解密 amt_decrypt是原程序中的解密算法,接收到的数据包得经过本函数解密，将在mdd.c中介绍<br />
    if(check_packet(recvbuf,recvlen)==0&amp;&amp;times&lt;2)//check_packet检查解密amt_decrypt完后的数据包是否符合md5摘要<br />
    {   g_message("check_packet bad here");<br />
        times++;<br />
        goto retry;//check_packet失败则重发数据包<br />
    }<br />
    cmd_record=get_attr(recvbuf);//取出对应的指令变成结构体链表CMD_RECORD<br />
    cmd=*recvbuf;<br />
    if(cmd==2)    //收到send_access_request对应的包<br />
    {<br />
        get_spec_attr(cmd_record);//把结构体链表CMD_RECORD里的东西分进全局变量attr_yy里 马上就要用到，attr_id存了cmd指令<br />
        index=0;<br />
        tmp=0;<br />
       <br />
        for (;(index&lt;0x0A)&amp;&amp;(attr_id[index]!=0);index++) {<br />
           <br />
            if (attr_id[index]==3) {<br />
                tmp=attr_val[8*(index+4*index)];////attr_val给每个命令40字节<br />
            }<br />
        }<br />
        if (tmp==1) {//认证成功！<br />
            //g_message("ok");<br />
            gtk_widget_hide_all (linkwindow);<br />
            Acc_Keep_Link=1;<br />
            pthread_create(&amp;keeplink,NULL,Link_Thread,NULL);//认证成功了，再创建一个线程用来保持连接 这回要去看Link_Thread了<br />
            return;<br />
        }<br />
        else<br />
        {   g_message("server_back_err");<br />
            gtk_widget_hide_all (linkwindow);<br />
            Acc_Keep_Link=-1;<br />
            return ;<br />
        }</p>
<p>    }</p>
<p>}</p>
<p>gint<br />
keeptest(gpointer data)<br />
{<br />
pthread_t keeplink;<br />
i++;<br />
g_message("%d",i);<br />
if (i&gt;10){Acc_Keep_Link=-1;g_message("can't keeplink!");return FALSE;}<br />
    fd_set readfds;<br />
    timeval timeout={5,0};//设置超时<br />
    BYTE recvbuf[1024];<br />
    BYTE cmd;<br />
    CMD_RECORD *cmd_record;<br />
    int recvlen;<br />
    int index=0;<br />
    BYTE tmp=0;<br />
    send_keeplink_request();<br />
    FD_ZERO(&amp;readfds);<br />
    FD_SET(sockfd, &amp;readfds);<br />
    if(1!=select(sockfd + 1,&amp;readfds,NULL,NULL,&amp;timeout))<br />
    {//超时<br />
        g_message("1.keep lost,thread keeptest for once!");<br />
        return TRUE;<br />
    }<br />
    recvlen=recvfrom(sockfd,(char *)recvbuf,sizeof(recvbuf),0,NULL,NULL);<br />
    if (recvlen==-1 ) {<br />
                    g_message("2.keep lost,thread keeptest for once!");<br />
                    return TRUE;<br />
    }<br />
    amt_decrypt(recvbuf,recvlen);<br />
    if(0==check_packet(recvbuf,recvlen))<br />
    {<br />
                    g_message("3.keep lost,thread keeptest for once!");<br />
                    return TRUE;<br />
    }<br />
    cmd_record=get_attr(recvbuf);<br />
    cmd=*recvbuf;<br />
    if(cmd==4)    //收到send_keeplink_request对应的包<br />
    {<br />
        index=0;<br />
        tmp=0;<br />
        for (;(index&lt;8)&amp;&amp;(attr_id[index]);index++) {<br />
            if (attr_id[index]==3) {<br />
                if (attr_val[8*(index+4*index)]!=1) {//发送send_keeplink_request失败<br />
                    g_message("4.keep lost,thread keeptest for once!");<br />
                    return TRUE;<br />
                }<br />
            }<br />
        }<br />
            g_message("keeptest result success");<br />
            Acc_Keep_Link=1;<br />
            pthread_create(&amp;keeplink,NULL,Link_Thread,NULL);<br />
            return FALSE;       <br />
    }<br />
    else<br />
    {<br />
                    g_message("5.keep lost,thread keeptest for once!");<br />
                    return TRUE;<br />
    }</p>
<p>return FALSE;<br />
}</p>
<p>void<br />
Keep_Thread()<br />
{guint send_timer;<br />
    if(Acc_Keep_Link!=2)return;<br />
    send_timer=gtk_timeout_add(10000,keeptest,NULL);<br />
}<br />
/***<br />
* Author: cc0cc<br />
* E-mail: cc0cc@126.com<br />
* WebSite: <a href="http://www.54chen.com">http://www.54chen.com</a><br />
* Date: 11 01 2008<br />
* FileName: Mythread.c<br />
***/</p>
<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae%e7%bb%ad%e9%9b%86-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part2）</title>
		<link>http://www.54chen.com/php-tech/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7-2.html</link>
		<comments>http://www.54chen.com/php-tech/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7-2.html#comments</comments>
		<pubDate>Sun, 14 Sep 2008 13:10:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[802.1x]]></category>
		<category><![CDATA[mynet]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[神州数码客户端]]></category>

		<guid isPermaLink="false">http://www.54chen.com/php-tech/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7-2.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>/*** * Author: cc0cc * E-mail: cc0cc@126.com * WebSite: http://www.54chen.com * Date: the Mid-Autumn Festival of 2008 * FileName: main.c ***/ /* * Initial main.c file generated by Glade. Edit as required. * Glade will not overwrite this file. */ &#8230;<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p>/***<br />
* Author: cc0cc<br />
* E-mail: cc0cc@126.com<br />
* WebSite: <a href="http://www.54chen.com">http://www.54chen.com</a><br />
* Date: the Mid-Autumn Festival of 2008<br />
* FileName: main.c<br />
***/<br />
/*<br />
* Initial main.c file generated by Glade. Edit as required.<br />
* Glade will not overwrite this file.<br />
*/</p>
<p>#ifdef HAVE_CONFIG_H<br />
# include &lt;config.h&gt;<br />
#endif<br />
#include &lt;stdio.h&gt;<br />
#include &lt;gtk/gtk.h&gt;<br />
#include &lt;pthread.h&gt;</p>
<p>#include &lt;gnome.h&gt;<br />
/*如果没记错的话eggtrayicon.h/tray.h都是在Linux用来做系统托盘的头文件，参见<br />
*http://hi.baidu.com/cc0cc/blog/item/26da147a4a428ce92f73b3da.html<br />
*/<br />
#include "eggtrayicon.h"<br />
#include "tray.h"<br />
#include "interface.h"<br />
#include "support.h"<br />
#include "connect.h"</p>
<p>/*系统托盘*/<br />
static void activate_action (GtkAction * action);<br />
static void net_quit (GtkAction * action);<br />
static const gchar *ui_info =<br />
    "&lt;ui&gt;"<br />
    " &lt;popup name='PopupMenu'&gt;"<br />
    "    &lt;menuitem action='About'/&gt;"<br />
    "    &lt;separator/&gt;"<br />
    "    &lt;menuitem action='Quit'/&gt;"<br />
    " &lt;/popup&gt;"<br />
    "&lt;/ui&gt;";<br />
static GtkActionEntry entries[] = {<br />
    {"Quit", GTK_STOCK_QUIT,    /* name, stock id */<br />
    N_("_断开"), "&lt;control&gt;Q",    /* label, accelerator */<br />
    N_("Quit"),        /* tooltip */<br />
    G_CALLBACK (net_quit)},<br />
    {"About", GTK_STOCK_ABOUT,    /* name, stock id */<br />
    N_( "_关于"), "&lt;control&gt;A",    /* label, accelerator 关于断开*/<br />
    N_("About"),        /* tooltip */<br />
    G_CALLBACK (activate_action)},<br />
};static guint n_entries = G_N_ELEMENTS (entries);<br />
/*系统托盘END*/</p>
<p>/*GTK程序入口*/<br />
int<br />
main (int argc, char *argv[])<br />
{</p>
<p>    GtkUIManager *ui;<br />
    GError *error = NULL;<br />
    GtkActionGroup *actions;<br />
#ifdef ENABLE_NLS<br />
bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);<br />
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");<br />
textdomain (GETTEXT_PACKAGE);<br />
#endif<br />
gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,<br />
                      argc, argv,<br />
                      GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR,<br />
                      NULL);<br />
window1 = create_window1 ();//这是第一个界面，也就是一出来的时候等待输入密码进行连接的界面<br />
    //g_thread_create(thread1,NULL,NULL,NULL);//wait for the book <img src='http://www.54chen.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
     //pthread_create(&amp;tid,NULL,thread1,NULL);//it is not so good!<br />
     tray = g_new0 (tray_demo, 1);//这里开始弄系统托盘<br />
    tray-&gt;window_main = window1;<br />
    create_tray(tray);<br />
    actions = gtk_action_group_new ("Actions");<br />
    gtk_action_group_set_translation_domain (actions, GETTEXT_PACKAGE);<br />
    gtk_action_group_add_actions (actions, entries, n_entries, NULL);<br />
    ui = gtk_ui_manager_new ();<br />
    gtk_ui_manager_insert_action_group (ui, actions, 0);<br />
    gtk_window_add_accel_group (GTK_WINDOW (window1),<br />
                    gtk_ui_manager_get_accel_group (ui));<br />
    if (!gtk_ui_manager_add_ui_from_string (ui, ui_info, -1, &amp;error))<br />
    {<br />
        g_message ("building menus failed: %s", error-&gt;message);<br />
        g_error_free (error);<br />
    }<br />
    tray-&gt;ui = ui;<br />
    tray-&gt;actions = actions;<br />
    tray-&gt;menus = gtk_ui_manager_get_widget (ui, "/PopupMenu");//这段代码可以在gnome中国的网站上找到。。:)<br />
g_message("ccc");   <br />
gtk_widget_show (window1);<br />
gtk_main ();g_message("here2!");<br />
return 0;<br />
}</p>
<p>//下面两个都是为系统托盘的事件做的<br />
static void<br />
activate_action (GtkAction * action)<br />
{   GtkWidget *about;<br />
    about = create_aboutdialog1 ();<br />
     gtk_widget_show (about);<br />
    return;<br />
}<br />
static void<br />
net_quit (GtkAction * action)<br />
{<br />
    Acc_Keep_Link=-1;<br />
    gtk_widget_show_all (window1);<br />
    send_access_request();<br />
    //g_message("net_quit!");<br />
}</p>
<p>/***<br />
* Author: cc0cc<br />
* E-mail: cc0cc@126.com<br />
* WebSite: <a href="http://www.54chen.com">http://www.54chen.com</a></p>
<p>* Date: the Mid-Autumn Festival of 2008<br />
***/</p>
<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/php-tech/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[中秋零献] 神州数码802.1x局域网UDP拔号软件MyNet-Gnome源代码大分析（Part1）</title>
		<link>http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7.html</link>
		<comments>http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7.html#comments</comments>
		<pubDate>Sun, 14 Sep 2008 09:05:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[mynet]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7.html</guid>
		<description><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br>/*** * Author: cc0cc * E-mail: cc0cc@126.com * WebSite: http://www.54chen.com * Date: the Mid-Autumn Festival of 2008 ***/ 概要：这个软件是三年前的时候在学校里写的，主要目的是给广大的Linuxers一个上网的机会，不过后来在我推出后官方又出了个Linux下的拔号二进制包。 PS:神州数码的局域网拔号软件在各大高校使用很多，有不少小区也是，一般官方发布的会有一定的限制。。。 熟悉802.1x协议的过程，对网络编程的学习也有一定的提高。 代码中的ASM汇编部分代码取自北航的高手xdkui（目前在MS就职），在此一并感谢他的努力hack。 声明：本代码只供学习使用，完全遵循计算机软件保护条例。 1.开发环境： gtk+/gnome Anjuta+Glade 2.文件树（截图）： /*** * Author: cc0cc * E-mail: cc0cc@126.com * WebSite: http://www.54chen.com * Date: the &#8230;<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></description>
			<content:encoded><![CDATA[<a href="http://www.54chen.com"><img border="0" src="http://www.54chen.com/wp-content/themes/54chen2011/images/54chen-logo.gif"></a><br>以下内容由<a href="http://www.54chen.com">[五四陈科学院]</a>提供<br><p class="cnt">/***<br />
* Author: cc0cc<br />
* E-mail: cc0cc@126.com<br />
* WebSite: <a href="http://www.54chen.com">http://www.54chen.com</a><br />
* Date: the Mid-Autumn Festival of 2008<br />
***/<br />
概要：这个软件是三年前的时候在学校里写的，主要目的是给广大的Linuxers一个上网的机会，不过后来在我推出后官方又出了个Linux下的拔号二进制包。</p>
<p class="cnt">PS:神州数码的局域网拔号软件在各大高校使用很多，有不少小区也是，一般官方发布的会有一定的限制。。。</p>
<p class="cnt">熟悉802.1x协议的过程，对网络编程的学习也有一定的提高。<br />
代码中的ASM汇编部分代码取自北航的高手xdkui（目前在MS就职），在此一并感谢他的努力hack。<br />
声明：本代码只供学习使用，完全遵循计算机软件保护条例。</p>
<p>1.开发环境：<br />
gtk+/gnome<br />
Anjuta+Glade<br />
2.文件树（截图）：</p>
<div class="cnt"><a href="http://www.54chen.com/wp-content/uploads/2008/11/f53990fba317f23b4f4aeaba.png"><img class="alignnone size-full wp-image-67" title="f53990fba317f23b4f4aeaba" src="http://www.54chen.com/wp-content/uploads/2008/11/f53990fba317f23b4f4aeaba.png" alt="" width="236" height="701" /></a></div>
<div class="cnt">/***<br />
* Author: cc0cc<br />
* E-mail: cc0cc@126.com<br />
* WebSite: <a href="http://www.54chen.com">http://www.54chen.com</a></div>
<div class="cnt">* Date: the Mid-Autumn Festival of 2008<br />
***/</div>
<br><br>想快点找到作者也可以到Twitter上留言: <a href="https://www.twitter.com/54chen" target="_blank">@54chen</a><br>或者你懒得带梯子上墙，请到新浪微博：<a href="http://t.sina.com.cn/54chen" target="_blank">@54chen</a>]]></content:encoded>
			<wfw:commentRss>http://www.54chen.com/_linux_/%e4%b8%ad%e7%a7%8b%e9%9b%b6%e7%8c%ae-%e7%a5%9e%e5%b7%9e%e6%95%b0%e7%a0%818021x%e5%b1%80%e5%9f%9f%e7%bd%91udp%e6%8b%94%e5%8f%b7%e8%bd%af%e4%bb%b6mynet-gnome%e6%ba%90%e4%bb%a3%e7%a0%81%e5%a4%a7.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

