研一暑假没有回家,做的第一个小东西

原创 2007年10月05日 16:21:00

是本科毕业的暑假做的,是我们现在做的实验室路由器仿真软件的一小小小小模块,但是是我第一次用VC做东西,也学到了很多东西,比如说第一次来做网络编程的东西,第一次做多线程的东西,虽然很小,但是通过动手,还是发现,哎,书上的东西和真正动手,差别太大了,而且发现自己动手能力是如此之差!!恼火!!

做的是一个SMTP协议来实现,目的是给网路不断的增加压力,发送SMTP数据包,并统计出来发送的数据量的大小,而且这个程序还有很多不完善的地方,不过是本人第一个小小小小项目,嘿嘿,还是把它贴出来吧。

PS:嘿嘿,肯定是要参考些东西的,所以在这里把那些参考资料也贴出来,如果是幸运的转载了某位牛人的帖子,请不要见怪,我也都是GOOGLE的

下面是我的代码: 

上面是程序运行图,下面是些核心代码,关于上面涉及到的组件什么的就不写了。


/*================================线程函数==========================================*/

UINT MyEventThread(void *pstring)
{
 CTestDlg *hWnd = (CTestDlg *)pstring;//自定义函数中获取系统指针;

 //smtp协议格式的前几个重要的字节填充;
 CString Serv = "EHLO"+hWnd->m_Server+"/r/n";

 CString From = "MAIL FROM :<"+hWnd->m_From+">/r/n";

 CString To = "RCPT TO :<"+hWnd->m_To+">/r/n";

 CString Text = hWnd->m_Message+"/r/n/r/n./r/n";
 
 //定义一个数组,来获取输入的格式字节;

 char *MailMessage[]=
 {
    Serv.GetBuffer(1),
     From.GetBuffer(1),
     To.GetBuffer(1),
     "DATA/r/n",
     Text.GetBuffer(1),
     "QUIT/r/n",
     NULL
   };


 //winsock的初始化及链接函数;

 WSADATA Wsa;

 WSAStartup(0x0101,&Wsa);

 SOCKET s = socket(AF_INET,SOCK_STREAM,0);

 SOCKADDR_IN sin;
 sin.sin_addr.s_addr=inet_addr(hWnd->m_Server);

 sin.sin_family=AF_INET;
 sin.sin_port=htons(25);

 if(connect(s,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
  MessageBox(NULL,"Error:can't connect to server","Error",MB_OK|MB_ICONERROR);//如果链接不起的话;
 

    int iLength=0;
    int iEnd=0;
    char sBuff[255]="";
    int iMsg=0;
   
              
    while(MailMessage[iMsg])//发送smtp数据包;
    {
     iLength=recv(s,(LPSTR)sBuff+iEnd,sizeof(sBuff)-iEnd,0);
     iEnd+=iLength;
     sBuff[iEnd]='/0';

     for(;;)//循环,不断的发送数据包以增加网络压力;
     {
     send(s,(LPSTR)MailMessage[iMsg],strlen(MailMessage[iMsg]),0);
     iTotal=send(s,(LPSTR)MailMessage[iMsg],strlen(MailMessage[iMsg]),0);
     
     hWnd->m_Len+=iTotal;//自定义的变量,以统计发送的数据包大小;
     }

     iMsg++;
    }
   

    closesocket(s);
    WSACleanup();

 
 return 0;
}
/*================================启动线程==========================================*/
void CTestDlg::OnOK()
{
 // TODO: Add extra validation here

 
 AfxBeginThread(MyEventThread,(void *)this); //调用自己编写的线程函数;
 

}


/*================================停止线程==========================================*/
void CTestDlg::OnEventThread()
{
 // TODO: Add your control notification handler code here

 
    UpdateData(FALSE);//统计发送数据量;

 iTotal=0;//重新初始化,以便重新启动线程以计数;
    m_Len=0; 
}

Ext做的第一个小东西登陆框(引入的css文件与本来页面的css文件冲突了,搞了半天才搞定)

作为菜鸟,初学Ext几天,这是最后的登录框的页面,是让它浮在首页的,点叉后回到首页,下面讲讲我的开发过程中的一些问题,这些问题肯定是很多新手会遇到的: 现在正在做一个二手网站,想用Ext做后台的页面...

学了J2SE半个月,自己独立写的第一个小东西——计算器(bug待修复啊~)

看了马士兵老师的视频差不多半个多月了,聊天的项目也看完了,真的觉得马士兵老师讲的挺好的,有趣而且很尽责,讲的很透,但又不是不给你自己思考的余地。 总之,终于开始自己写一些称得上是程序的小玩意儿了,先...
  • ICY520
  • ICY520
  • 2011年11月20日 01:34
  • 934

这两天都没有写博客,虽然也有两样小东西出来 但是,,说实话我没掌握很好 代码好相似 记不住

这两天,我做了一个小计算器和一些

记录下自己在培训时期做的小东西。

一个小萌新自娱自乐的,游戏代码很简单,游戏有点难度

Delphi做的小东西

  • 2009年11月15日 15:13
  • 382KB
  • 下载

一些长期更新的小东西,容易忘记的

容易忘记的小知识

.NET 做的小东西 含代码

  • 2011年10月23日 20:08
  • 428KB
  • 下载

自己做的小东西 网页类别分页

  • 2012年03月19日 00:07
  • 627KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:研一暑假没有回家,做的第一个小东西
举报原因:
原因补充:

(最多只允许输入30个字)