Click here to Skip to main content
Click here to Skip to main content

Simple Class Used To Get Current Webpage's Net Speed

, 4 Apr 2010 CPOL
Rate this:
Please Sign up or sign in to vote.
Really a tiny class, used to get the currently webpage's net speed you are opening
netspeed.jpg

Introduction

The tiny class is used to help find the current webpage's speed. You can add this function to your own web browser. Many browser users claim to have this function. So I write an easy one. If you have a much better method to do that, please let me know. I will be grateful.

Background

When we open a webpage, we don't want to wait longer to open it, and other pages also have the same content. Now, the class helps you decide whether to change to another.

Using the Code

Add the two files to your project, "CurNetSpeed.cpp" and "CurNetSpeed.h".

Include the header files to where you want to call. And now do as follows:

//Step 1:

#include "CurNetSpeed.h"
...
//Step 2:
BOOL CTestNetSpeedDemoDlg::OnInitDialog()
{
...
	if(!m_cns.Init ())
		AfxMessageBox("Init failed!");
...
}
//Step3:
void CTestNetSpeedDemoDlg::OnTest() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	GetDlgItem(IDC_STATIC1)->SetWindowText
		(m_cns.GetCurWebTime (m_url.GetBuffer (512)));
}

If you want to use it, just look at the header of the class.

class CCurNetSpeed  
{
public:
	char * GetCurWebTime(char *url);
	BOOL Init();
	CCurNetSpeed();
	virtual ~CCurNetSpeed();
private:
	char * GetState(int time);
	USHORT checksum(USHORT   *buffer, int size);
	void fill_icmp_data(char* icmp_data,int datasize);
	char url[512];
		  WSADATA wsaData;   
	  SOCKET   sockRaw;   
	  struct   sockaddr_in   dest,from;   
	  struct   hostent   *   hp;   
	  int bread,datasize;   
	  int fromlen ;   
	  int timeout;   
	  char   *dest_ip;   
	  char   *icmp_data;   
	  char   *recvbuf;   
	  unsigned   int   addr;   
	  USHORT   seq_no;   
    

  IpHeader   *iphdr;   
  IcmpHeader   *icmphdr;   
  unsigned   short   iphdrlen;   
  int time;
  int bwrote;
};

There aren't many public methods, so you can extend it as per your requirements.

Principle of the Code

How to get the speed of the webpage you are opening? I thought much about it, but I haven't found a better method. This class uses the code of "Ping.exe". You want to know how long your computer's packet takes to get to the web server. Just ping the server. The ping command will retrieve icmp message, the icmp message has a time stamp, use the current time minus the time stamp will to give the time elapsed.

History

  • 5th April, 2010: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Aric Green
Engineer
China China
Although I was a college studnet now as the same I was also a teacher of C/C++/3DS MAX/website for National Computer Rank Examination.I began to study computer when I was a child 8 year's old.I use BASIC/C/C++/VB/VF/VC/DELPHI/.NET to programming.When in college I was the chairman of Computer Association of our school and I take part in ACM Competition twice in two years.I also was the only person who take part in the National Mathematical Contest in Modeling twice in two years of our school.I like computer programming very much.Hope to be your friend.thx!

Comments and Discussions

 
GeneralMy vote of 4 Pinmembercsharpbd27-Feb-13 8:54 
GeneralMy vote of 1 PinmemberSheldon Lemoine12-Apr-10 12:44 
RantVery basic and not very useful ... PinmemberTommyTooth5-Apr-10 22:29 
GeneralRe: Very basic and not very useful ... PinmemberAric Green6-Apr-10 0:16 
GeneralRe: Very basic and not very useful ... PinmemberAndersChen11-Oct-10 21:35 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150123.1 | Last Updated 5 Apr 2010
Article Copyright 2010 by Aric Green
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid