置顶随笔

[置顶]一个关于凯撒编码与解码的C程序源码 有意见多多提,

 

 1//凯撒加密算法就是将D设置为3时的加密方法。下面是用C实现的加密模块。
 2
 3//////////////////////////////////////////////////////////////////////////
 4//
 5//凯撒加密算法基本原理
 6//参数:
 7// D   : 移位数
 8// data : 原始数据
 9// result : 返回结果
10// len   : 原始数据长度
11//
12void func1(int D,const char* data,char* result, int len){
13// 凯撒加密算法变形
14for (int i = 0;i < len;i++)
15{
16   int val = (data[i]+D);
17   if (val > (int)'z')
18   {
19    val = (int)(val-26);
20   }

21   //cout << (char)val ;
22   result[i] = (char)val;
23}

24//cout << endl;
25}

26
27//////////////////////////////////////////////////////////////////////////
28//
29//凯撒解密算法基本原理
30//参数:
31// D   : 回移位数
32// data : 编码后数据
33// result : 原始数据
34// len   : 数据长度
35//
36void func2(int D,const char* data,char* result, int len){
37// 凯撒加密算法变形
38for (int i = 0;i < len;i++)
39{
40   if (data[i] < 'A' || data[i] > 'Z')
41   {
42    result[i] = data[i];
43    continue;
44   }

45   if (data[i] >= 'A' && data[i] <= 'E')
46   {
47    char val = char(data[i] + 'V' - 'A');
48    result[i] = (char)val;
49   }
else{
50    result[i] = (char)(data[i] - D);
51   }

52}

53}

54

posted @ 2010-01-15 17:01 编码者-thinker 阅读(1435) | 评论 (0)编辑 收藏

2014年7月7日

Diameter消息解析工具

 1 #ifndef PUBLIC_H_INCLUDED
 2 #define PUBLIC_H_INCLUDED
 3 
 4 #include <stdio.h>
 5 #include <string.h>
 6 
 7 
 8 #ifdef _DEBUG_
 9 
10 #define debug()      fprintf(stderr, __VA_ARGS__)
11 #define ASSERT(x , ) do {                            \
12         if( !( x ) )                                    \
13         {                                               \
14             fprintf(stderr, "LINE:%d,FUNC:%s ,TIME:%s\n"\
15                 , __LINE__, __func__, __TIME__);        \
16             fprintf( stderr, __VA_ARGS__);              \
17             exit( 1 );                                  \
18         }                                               \
19 } while ( 0 )
20 #else
21 #define debug()
22 #define ASSERT(x , )
23 #endif
24 
25 
26 
27 
28 unsigned int ascii_char_maps[ 256 ] ;
29 
30 
31 
32 #endif 
33 
#include "public.h"

void init_ascii_char_maps()
{
    int i ;
    memset( ascii_char_maps , -1, sizeof ascii_char_maps);
    for( i = 'a' ; i < 'g' ; i++)
    {
        ascii_char_maps[ i ] = i - 'a' + 0x0a;
    }
    for( i = 'A' ; i < 'G' ; i++)
    {
        ascii_char_maps[ i ] = i - 'A' + 0x0a;
    }
    for( i = '0' ; i <= '9' ; i++ )
    {
        ascii_char_maps[ i ] = i - '0' ;
    }
}


/**
*  "A0" ==> 0xA0
*  两个字节数据 --> 一个字节数值
*/

int  __HexStrToHexInt( const char *szSrc , unsigned char *chDst )
{
    unsigned int tmp_val;
    *chDst = 0;
    tmp_val = ascii_char_maps [ szSrc[0] ] ;
    ASSERT( tmp_val != -1 , "unknown character value[%x]\n" , szSrc[0]);
    *chDst = (tmp_val << 4);
    tmp_val = ascii_char_maps [ szSrc[1] ] ;
    ASSERT( tmp_val != -1 , "unknown character value[%x]\n" , szSrc[1]);
    *chDst += tmp_val;
    debug("[%c,%c]==>[%02X]\n",szSrc[0],szSrc[1], *chDst);
    return 0;
}

/**
*  "A0B0C0" ==> 0xA0B0C0
*  2n个字节数据 --> n个字节数值(n >= 0)
*/
int  HexStrToHexInt( const char *szSrc , unsigned char *chDst , int *length )
{
    int i,j,ret ;
    int src_len = strlen(szSrc);
    const char *pSrc;
    char *pDst;
    if( src_len % 2 != 0 )
    {
        fprintf( stderr, "szSrc length[%d] error! \n", src_len);
        return -1;
    }
    if( src_len == 0 )
    {
        chDst[0] = 0;
        *length = 0;
        return 0;
    }

    for( pSrc = szSrc, pDst = chDst ; (pSrc - szSrc) < src_len ; pSrc  += 2, pDst++ )
    {
        ret = __HexStrToHexInt( pSrc , pDst );
        if( ret < 0 )
        {
            fprintf( stderr, "__HexStrToHexInt return [%d] error\n", ret );
            return -2;/*内部字符串格式错误,存在非法字符*/
        }
    }
    *length = src_len/2;
    chDst[*length] = 0;
    return 0;
}

 1
 #include "public.h"
 2 
 3 /*the attribute struct of message head*/
 4 typedef struct _dcca_msg_head_cmd_t
 5 {
 6         unsigned int    r    :1;  /**< Request */
 7         unsigned int    p    :1;  /**< Proxiable */
 8         unsigned int    e    :1;  /**< Error */
 9         unsigned int    t    :1;  /**< Potentially re-transmitted */
10         unsigned int    rsvd :4;  /**< Reserved */
11         unsigned int    uiCmdCode:24;   /*Command-Code */
12 } DCCA_MSG_CMD_T;
13 
14 
15 /*the struct of message head*/
16 
17 typedef struct  _dcca_msg_head_t{
18         unsigned char   ucVer;                  /*Version*/
19         unsigned int    uiLen:24;               /*Message Length*/
20         DCCA_MSG_CMD_T  command;                        /*command flags */
21         unsigned int    uiAppID;                /*Application-ID*/
22         unsigned int    uiHbh;                  /*Hop-by-Hop Identifier*/
23         unsigned int    uiEte;                  /*End-to-End Identifier*/
24 } DCCA_MSG_HEAD_T ;
25 
26 
27 void  display_msg_head(  DCCA_MSG_HEAD_T *p_msg_head )
28 {
29     DCCA_MSG_HEAD_T *p;
30     p = p_msg_head;
31     fprintf(stderr, "ver:%d,msg_len:%x\nflag{r:%d,p:%d,e:%d,t:%d,rsvd:%d},command_code:%d\n",
32             p->ucVer,p->uiLen,p->command.r,p->command.p,p->command.e, p->command.t, p->command.rsvd, p->command.uiCmdCode);
33 }
34 
35 #define DCCA_MSG_HEAD_LEN  sizeof( DCCA_MSG_HEAD_T )
36 
37 /*the attribute struct of message head*/
38 typedef struct _dcca_avp_node_flag_t
39 {
40         unsigned int    v    :1;  /**< Vender-ID flag */
41         unsigned int    m    :1;  /**< Must 指明对该AVP的支持是否是必需的 */
42         unsigned int    p    :1;  /**< 指明为保证端到端安全需要加密 */
43         unsigned int    rsvd :5;  /**< Reserved */
44 } DCCA_AVP_FLAG_T;
45 
46 
47 
48 typedef struct  _dcca_avp_node_head_t {
49         unsigned int    avp_code;  /*AVP Code*/
50         DCCA_AVP_FLAG_T flag ; /*V M P r r r r r*/
51         unsigned int    avp_length; /*AVP Length*/
52         unsigned int    verdor_id;      /*制造商ID*/
53 } DCCA_AVP_CODE_HEAD_T;
54 
55 #define DCCA_AVP_CODE_HEAD_LEN  sizeof( DCCA_AVP_CODE_HEAD_T )
56 
57 int main( int argc ,char *argv[] )
58 {
59 
60         int i,len;
61         
62         char *szSrc = "0100035CC000011000000004080004C5F280C82B000001074000003443434747534E3031424857312E636D63632E636F6D3B333631323539303636323B32323635363B3239393137000001024000000C00000004000001084000001D43434747534E3031424857312E636D63632E636F6D0000000000012840000010636D63632E636F6D0000011B40000010636D63632E636F6D00000125400000166A696C696E2E636D63632E636F6D0000000001A04000000C000000020000019F4000000C00000003000001CD400000156770727340636D63632E636F6D000000000001164000000CD63F4A6E000000374000000CD753C9CA000001BB4000002C000001C24000000C00000000000001BC4000001538363133373034343439353836000000000001BB4000002C000001C24000000C00000001000001BC4000001734363030303434323830393536313200000001C74000000C00000001000001C840000064000001B540000008000001BE40000038000001A54000001000000000000001880000019C4000001000000000000000D00000019E4000001000000000000000B8000001B04000000C7735940900000368C0000010000028AF00000004000001CA00000024000001CB0000000C00000000000001CC00000010686992005292918700000369C000017C000028AF0000036AC0000170000028AF00000002C0000010000028AF17346C9B00000003C0000010000028AF00000000000004CBC0000012000028AF00010AE4D18A000000000005C0000027000028AF30352D32333932316639313936393739373734666239373937303000000004CCC0000012000028AF0001DDB1CC0D00000000034FC0000012000028AF0001DDB1CC3100000000034EC0000012000028AF0001C0A82090000000000008C0000011000028AF343630303000000000000009C0000011000028AF34363030300000000000000AC000000D000028AF350000000000001E4000000D636D6E65740000000000000CC000000D000028AF300000000000000DC0000010000028AF3034303000000012C0000011000028AF343630303000000000000017C000000E000028AF23000000000003ECC000001A000028AF755F705F636D63635F636D6E6574000000000016C0000014000028AF0064F00043E780F300000015C000000D000028AF02000000";
63         
64         char szDst[ 4096 ];
65 
66         DCCA_MSG_HEAD_T dcca_msg_head;
67 
68         init_ascii_char_maps();
69         memset( &dcca_msg_head, 0, sizeof ( DCCA_MSG_HEAD_T ));
70         len = 0;
71         memset( szDst, 0, sizeof( szDst ) );
72         FILE *fp = fopen( "./a.txt" , "wb+");
73         for( i = 0 ;i < 2; i++)
74         {
75                 HexStrToHexInt(szSrc, szDst,&len);
76 /**/
77                 fwrite( szDst, len , 1 ,fp );
78 /**/
79 
80                 memcpy( &dcca_msg_head, szDst, DCCA_MSG_HEAD_LEN );
81                 display_msg_head( &dcca_msg_head );
82         }
83         fclose(fp);
84 
85         return 0;
86 }
87 

posted @ 2014-07-07 17:26 编码者-thinker 阅读(832) | 评论 (0)编辑 收藏

2013年5月14日

三星GT-I9003系统刷机时报错“E:Unable to write to ums lunfile”--问题还在解决中

Question:

手机型号:三星GT-I9003
问题描述:最初问题为系统无限重启但都只停留在SAMSUNG界面后就重启了;
后续操作:
    首先我用“dxkp9美化rom” 重新刷了一下系统,结果并没有解决,于是进入了recovery模式,执行了"Wipe data/factory reset"后提示的错误信息为
"
Formatting /datadata...
Done.
Formatting /sd-ext...
Done.
Error mounting /sdcard!
Error mounting /data!
Error mounting /sdcard!
E:Unable to write to ums lunfile (No such file or directory)
--Wiping data...
Formatting /data...
Error mounting /data!
Skippping format...
Formatting /cache...
Fromatting /datadata...
Formatting /sd-ext...
Formatting /sdcard/.android_secure...
Error mounting /sdcard/.android_secure!
Skipping format...
Data wipe complete.
"
    根据提示,可能需要重新加载一下分区,于是我进入了"Mounts and Storage Menu"菜单中,显示的信息如下:
"
- unmount /cache
- mount /data
- unmount /system
- mount /datadata
- mount /sdcard
- mount /sd-ext
- format /cache
- format /data
- format /system
- format /datadata
- format /sdcard
- format /sd-ext
- mount USB storage
"
然后我按照顺序手工加载了 /sd-ext 和 /datadata 是成功的,但是在执行"mount /sdcard"后就提示"Error mounting /sdcard!",执行"mount /data"也是同样的报错"Error mounting /data!"
Format_volume: rfs format failed on /dev/block/mmcblk0p3
Formatting /dbdata...
Formatting /cache...
Data wipe failed.

Solving:

(获得了root权限和adb工具之后,问题似乎没有那么难解决了,尝试中)

操作记录

1. 刷DXKP9美化rom 
2. 进入recovery 模式,然后连接数据线,进入adb shell模式;
    输入命令 whoami(显示为我是root用户了),
执行
fdisk -l /dev/block/mmcblk0
输出结果如下:
Disk /dev/block/mmcblk0: 7822 MB, 7822376960 bytes
5 heads, 13 sectors/track, 235047 cylinders
Units = cylinders of 65 * 512 = 33280 bytes
              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk0p1             127      235048     7634944   b Win95 FAT32
显示磁盘大小为8G(这个是我External sdcard),也就是说显示的直接就是我的外部SD卡了,那么按照原理来说,我只需要重新对我的外置SD卡进行分区,然后mount到 /sdcard就可以了(希望理解是正确的),
--------------
没搞过安卓这些东西,得考虑下再动手了。不能让手机真的成了"砖头",而且关于刷机失败种类以及是否有补救方法等相关的介绍文档相当少,收集整理整理,以后会有帮助的。

posted @ 2013-05-14 22:28 编码者-thinker 阅读(1531) | 评论 (1)编辑 收藏

2011年11月5日

[转载]VC无闪烁刷屏技术的实现

VC无闪烁刷屏技术的实现

1显示的图形为什么会闪烁

  我们的绘图过程大多放在OnDraw或者OnPaint函数中,OnDraw在进行屏幕显示时是由OnPaint进行调用的。当窗口由于任何原因需要重绘时,总是先用背景色将显示区清除,然后才调用OnPaint,而背景色往往与绘图内容反差很大,这样在短时间内背景色与显示图形的交替出现,使得显示窗口看起来在闪。如果将背景刷设置成NULL,这样无论怎样重绘图形都不会闪了。当然,这样做会使得窗口的显示乱成一团,因为重绘时没有背景色对原来绘制的图形进行清除,而又叠加上了新的图形。有的人会说,闪烁是因为绘图的速度太慢或者显示的图形太复杂造成的,其实这样说并不对,绘图的显示速度对闪烁的影响不是根本性的。例如在OnDraw(CDC *pDC)中这样写:

pDC->MoveTo(0,0);

pDC->LineTo(100,100);

  这个绘图过程应该是非常简单、非常快了吧,但是拉动窗口变化时还是会看见闪烁。其实从道理上讲,画图的过程越复杂越慢闪烁应该越少,因为绘图用的时间与用背景清除屏幕所花的时间的比例越大人对闪烁的感觉会越不明显。比如:清楚屏幕时间为1s绘图时间也是为1s,这样在10s内的连续重画中就要闪烁5次;如果清楚屏幕时间为1s不变,而绘图时间为9s,这样10s内的连续重画只会闪烁一次。这个也可以试验,在OnDraw(CDC *pDC)中这样写:

for(int i=0;i<100000;i++)

{

pDC->MoveTo(0,i);

pDC->LineTo(1000,i);

}

  程序有点极端,但是能说明问题。

说到这里可能又有人要说了,为什么一个简单图形看起来没有复杂图形那么闪呢?这是因为复杂图形占的面积大,重画时造成的反差比较大,所以感觉上要闪得厉害一些,但是闪烁频率要低。那为什么动画的重画频率高,而看起来却不闪?这里,我就要再次强调了,闪烁是什么?闪烁就是反差,反差越大,闪烁越厉害因为动画的连续两个帧之间的差异很小所以看起来不闪。如果不信,可以在动画的每一帧中间加一张纯白的帧,不闪才怪呢。

2、如何避免闪烁

  在知道图形显示闪烁的原因之后,对症下药就好办了。首先当然是去掉MFC提供的背景绘制过程了。实现的方法很多:

  * 可以在窗口形成时给窗口的注册类的背景刷付NULL

  * 也可以在形成以后修改背景

static CBrush brush(#ff0000);

SetClassLong(this->m_hWnd,GCL_HBRBACKGROUND,(LONG)(HBRUSH)brush);

  * 要简单也可以重载OnEraseBkgnd(CDC* pDC)直接返回TRUE

  这样背景没有了,结果图形显示的确不闪了,但是显示也象前面所说的一样,变得一团乱。怎么办?这就要用到双缓存的方法了。双缓冲就是除了在屏幕上有图形进行显示以外,在内存中也有图形在绘制。我们可以把要显示的图形先在内存中绘制好,然后再一次性的将内存中的图形按照一个点一个点地覆盖到屏幕上去这个过程非常快,因为是非常规整的内存拷贝)。这样在内存中绘图时,随便用什么反差大的背景色进行清除都不会闪,因为看不见。当贴到屏幕上时,因为内存中最终的图形与屏幕显示图形差别很小(如果没有运动,当然就没有差别),这样看起来就不会闪。

3、如何实现双缓冲

  首先给出实现的程序,然后再解释,同样是在OnDraw(CDC *pDC)中:

CDC MemDC; //首先定义一个显示设备对象

CBitmap MemBitmap;//定义一个位图对象

//随后建立与屏幕显示兼容的内存显示设备

MemDC.CreateCompatibleDC(NULL);

//这时还不能绘图,因为没有地方画

//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小

MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

//将位图选入到内存显示设备中

//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上

CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

//先用背景色将位图清除干净,这里我用的是白色作为背景

//你也可以用自己应该用的颜色

MemDC.FillSolidRect(0,0,nWidth,nHeight,#ffffff);

//绘图

MemDC.MoveTo(……);

MemDC.LineTo(……);

//将内存中的图拷贝到屏幕上进行显示

pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);

//绘图完成后的清理

MemBitmap.DeleteObject();

MemDC.DeleteDC();

请参阅注释。

4、如何提高绘图的效率

  实际上,在OnDraw(CDC *pDC)中绘制的图并不是所有都显示了的,例如:你在OnDraw中画了两个矩形,在一次重绘中虽然两个矩形的绘制函数都有执行,但是很有可能只有一个显示了,这是因为MFC本身为了提高重绘的效率设置了裁剪区。裁剪区的作用就是:只有在这个区内的绘图过程才会真正有效,在区外的是无效的,即使在区外执行了绘图函数也是不会显示的。因为多数情况下窗口重绘的产生大多是因为窗口部分被遮挡或者窗口有滚动发生,改变的区域并不是整个图形而只有一小部分,这一部分需要改变的就是pDC中的裁剪区了。因为显示(往内存或者显存都叫显示)比绘图过程的计算要费时得多,有了裁剪区后显示的就只是应该显示的部分,大大提高了显示效率。但是这个裁剪区是MFC设置的,它已经为我们提高了显示效率,在进行复杂图形的绘制时如何进一步提高效率呢?那就只有去掉在裁剪区外的绘图过程了。可以先用pDC->GetClipBox()得到裁剪区,然后在绘图时判断你的图形是否在这个区内,如果在就画,不在就不画。

  如果你的绘图过程不复杂,这样做可能对你的绘图效率不会有提高。

  具体程序大家可看以下源代码: 

5、无闪烁背景图的绘制代码实现 

/////////////// 无闪烁背景图绘制 //////////

//// 程序设计: icemen (温冰) 树爱兵

//////////////////////////////////////////////

BOOL CStrucView::OnEraseBkgnd(CDC* pDC) 

{ int nWidth;

int nHeight;

//CView::OnEraseBkgnd(pDC);

CStrucDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

CRect rect;

GetWindowRect(&rect);

nWidth = rect.Width();

nHeight= rect.Height();

CDC MemDC;

CBitmap MemBitmap;

MemDC.CreateCompatibleDC (NULL);

MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);

MemDC.FillSolidRect(0,0,nWidth,nHeight,#ffffff);

///////////////////////////////////////////////////////

//// 以上为画背景色 //////////////

//// 以下为画背景图 //////////////

/////////////////////////////////////////////////////// 

GetClientRect(rect);

BITMAP bm;

CDC dcMem;

VERIFY(m_bmp.GetObject(sizeof(bm),(LPVOID)&bm));

dcMem.CreateCompatibleDC(pDC);

CBitmap *pOldBMP =( CBitmap *)dcMem.SelectObject(&m_bmp);

MemDC.BitBlt( (rect.right - bm.bmWidth)/2,

(rect.bottom - bm.bmHeight)/2,

bm.bmWidth,bm.bmHeight,&dcMem,0,0,SRCCOPY);

dcMem.SelectObject(pOldBMP);

///////////////////////////////////////////////////////

//// 以上为画背景图 //////////////

///////////////////////////////////////////////////////

pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);

MemBitmap.DeleteObject();

MemDC.DeleteDC();

return TRUE;

}

/////////////// 无闪烁背景图绘制 //////////

/////////////////////////////////////////////

注:程序中m_bmp 为相应 的 StrucView.h中定义,为位图资源类

protected:

CBitmap m_bmp;

  并应加上下面段,当然,你可在任何时候加入loadBitmap 子例程,也可加入文件资源,那由得你了!

CStrucView::CStrucView()

{

VERIFY(m_bmp.LoadBitmap(IDB_BITMAP3));

}

posted @ 2011-11-05 12:00 编码者-thinker 阅读(321) | 评论 (0)编辑 收藏

2010年12月13日

排序算法之插入排序的通用算法

 1 void move(char *a ,char *b , int width )
 2 {
 3     if(a != b )
 4     {
 5         while( width--)
 6         {
 7             *a++ = *b++;
 8         }
 9     }
10 }
11 void insert_sort(void *array,int width , int num , int (*comp)(void *a,void *b) )
12 {
13     int i,j;
14     char *ptr;
15     char *mid = (char *)malloc( sizeof(char* num * width ); 
16     ptr = (char *)array;
17     
18     memset(mid,0,sizeof(mid));
19     for( i = 1 ; i < num ; i++ )
20     {
21         move(mid , ptr + i*width , width );
22         for(j = i ; j > 0 ; j-- )
23         {
24             if(comp( mid ,ptr + (j - 1)*width ) >= 0 )
25             {
26                 break;
27             }
28             move( ptr + j*width , ptr + (j-1)*width ,width );
29         }
30         move(ptr + j * width , mid , width );
31         for( j = 0; j < num ; j++ )
32             printf("%d,",*int*)(ptr + width*j));
33     }
34 }
35 
36 int cmp(void *a,void *b )
37 {
38     int *aa ,*bb;
39     aa = (int *) a;
40     bb = (int *) b;
41     return *bb - *aa ;
42 }

posted @ 2010-12-13 23:05 编码者-thinker 阅读(161) | 评论 (0)编辑 收藏

2010年9月26日

通信简史

定义通信原指人与人相互之间交换信件,以便彼此交流,互换信息。现在被推广为人与人之间同过某种媒体进行的信息交流与传递。也可以特指通信或电信行业。
中华人民共和国电信条例》给电信的定义如下:“是指利用有线、无线的电磁系统或者光电系统,传送、发射或者接收语音、文字、数据、图像以及其他任何形式信息的活动。”
方式
古代:烽火台、击鼓、驿站、信鸽、旗语、身体语言、接触、眼神等
现代:电报,固定电话,移动电话,短信,电子邮件(E-MAIL),网络电话(VOIP)等
世界通信简史
通信,最早可以追溯到古代的中国与非洲。在古中国,人们用烽火来传递消息,既“白天生烟,夜晚举火”。而在古非洲,击鼓传信是最早最方便的办法,非洲人用圆木特制的大鼓可传声至三四公里远,再通过“鼓声接力”和专门的“击鼓语言”,可在很短的时间内把消息准确地传到50公里以外的另一个部落。

公元968年,中国人发明了一种叫“竹信”的东西,它被认为是今天电话的雏形。

欧洲对于远距离传送声音的研究始于17世纪。英国著名的物理学家和化学家罗伯特·胡克首先提出了远距离传送话音的建议。

1753年2月17日,《苏格兰人》杂志上发表了一封署名C.M的书信。在这封信中,作者提出了用电流进行通信的大胆设想。他建议:把一组金属线从一个地点延伸到另一个地点,每根金属线与一个字母相对应。在一端发报时,便根据报文内容将一条条金属线与静电机相连接,使它们依次通过电流。电流通过金属线上的小球便将挂在它下面的写有不同字母或数字的小纸片吸了起来,从而起到远距离传递信息的作用

1793年,法国查佩兄弟俩在巴黎和里尔之间架设了一条230千米长的接力方式传送信息的托架式线路。这是一种由16个信号塔组成的通信系统。信号机由信号员在下边通过绳子和滑轮,操纵支架的不同角度,表示相关的信息。当时,法国和奥地利正在作战,信号系统只用一个小时就把从奥军手中夺取埃斯河畔孔代的胜利消息传到巴黎。以后,比利时、荷兰、意大利、德国及俄国等也先后建立了这样的通信系统。据说查佩两兄弟之一是第一个使用“电报”这个词的人。

而在1796年,休斯提出了用话筒接力传送语音信息的办法,并且把这种通信方式称为—Telephone,一直延用至今。

1837年,美国画家莫尔斯从在电线中流动的电流在电线突然截止时会迸出火花这一事实得到启发设计出了著名的莫尔斯电码。它是利用“点”、“划”和“间隔”的不同组合来表示字母、数字、标点和符号。并于1844年5月24日,在华盛顿国会大厦联邦最高法院会议厅里,亲手操纵着电报机,用莫尔斯电码发出了世界上第一份电报。内容为“上帝创造了何等奇迹”。

1850年8月28日,英国人约翰(John)和雅各布·布雷特(Jacob Brett)兄弟俩在法国的格里斯—奈兹海角(Cape Gris-Nez)和英国索兰海角(Cape Souther-land)之间的公海里用“巨人”号拖船在英法两国之间的多佛尔海峡敷设了第一条海缆。

1857年8月7日第一条横贯大西洋海底海缆开始铺设。由英国西海岸至美国东海岸。1858年8月5日总长为3240公里的电缆敷缆完毕。凌晨二点四十五分,第一份海缆电报横越大西洋。

1865年5月17日,国际电报联盟(International Telegraph Union ,ITU)在巴黎成立,它由法、德、俄、意、奥等20个欧洲国家组成;1932年,70多个国家的代表在西班牙马德里召开会议,决定自1934年1月1日起正式改称为“国际电信联盟”(International Telecommunication Union)。1969年5月17日,国际电信联盟第二十四届行政理事会正式通过决议,决定把国际电信联盟的成立日——5月17日定为“世界电信日

1875年6月2日,美国人亚力山大.格雷厄姆.贝尔(Bell,Alekander Graham)发明了电话。至今美国波士顿法院路109号的门口,仍钉着块镌有:1875年6月2日电话诞生在这里的铜牌。1876年2月14日,贝尔申请了那个著名的他和沃森一直研究着的装置——电话的专利。1876年3月7日,贝尔获得发明电话专利,专利证号码NO:174655。

1876年3月10日,贝尔在做实验时不小心把硫酸溅到自己的腿上,疼痛之中他叫了起来:“沃森先生,快来帮我啊!”没有想到,这句话通过实验中的电话传到了在另一个房间工作的他的助手沃森的耳朵里。这句极普通的话,也就成为人类第一句通过电话传送的话音而记入史册。

1877年4月27日,爱迪生申请了一个专利,这是一个改进后的电话话筒。在此之前两周,也有人也申请了电话话筒的发明专利。但爱迪生的巨大成就使人们忽视了这个名叫Emile Berliner的人。电话话筒的意义在于使电话走向了实用。

1877年7月9日,贝尔电话公司成立。

1878年1月28日,美国康涅狄格州的纽好恩,第一个市内电话交换所开通,当时只有20 个用户。

1878年2月18日,世界上第一个电话号簿在美国New Haven Connecticut出版。

1879年,爱迪生利用电磁效应,制成炭精送话器,使送话效果显著提高。爱迪生炭精话筒的原理及其器件一直沿用至今。

1882年,电话线采用双绞线。这是英国教授休斯1879年发表架空线干扰的论文引起的结果。

1887年3月21日,德国物理学家赫兹(Hertz)在实验中证实了电磁波的存在,赫兹的发现具有划时代的意义,它不但证明了麦克斯韦理论的正确,更重要的是导致了无线电的诞生,开辟了电子技术的新纪元,标志着从“有线电通信”向“无线电通信”的转折点。也是整个移动通信的发源点,应该说,从这时开始,人类开始进入了无线通信的新领域。

1892年11月3日,用史端乔发明的接线器制成的“步进制自动电话交换机”在美国印第安纳州拉波特城安装使用。这是第一部自动交换局。

1895年5月7日,俄国科学家波波夫发明无线电接收机。1896年3月24日,波波夫和雷布金在俄国物理化学协会的年会上作了用无线电传送莫尔斯电码的表演。他们操纵自已制作的无线电收发信机,拍发了“Heinoich Hertz”(海因里希.赫兹)一词,以表示对这位电磁波先驱者的崇敬。虽然当时的通信距离中只有250米,但这却是世界上最早通过无线电传送的有明确内容的电报。

1897年5月18日,马可尼进行横跨布里斯托尔(Bristol)海峡的无线电通信取得成功,就在固定站与一艘拖船之间,通信距离为18海里。

1899年3月28日,意大利物理学家G.马可尼在英国南福兰角建立了一个无线电报站,用来与法国维姆勒之间的通信,两地距离为31英里,实现了英国与欧洲大陆的无线电通信。与同一时期在俄国受到冷遇的波波夫相比,马可尼要幸运得多,他得到了英国邮政部的全力支持。1896年6月2日,他获得无线电报专利;1900年10月,他在英国普耳杜建立一座大功率发射台,采用10千瓦的音响火花式电报发射机;1901年12月,马可尼在加拿大纽芬兰市的圣约翰斯港通过风筝牵引的天线,成功地接收到普耳杜电台发来的电报。马可尼的成功在世界各地引起巨大的轰动,推动无线电通信走向了全面实用的阶段。

1906: 美国的Lee De Forest发明了电子管。在这之前造出数字电子计算机是不可能的。这为电子计算机的发展奠定了基础。

1906年12月24日圣诞节前夕,晚上8点左右,在美国新英格兰海岸附近穿梭往来的船只上,一些听惯了“嘀嘀嗒嗒”莫尔斯电码声的报务员们,忽然听到耳机中传来有人正在朗读圣经的故事,有人拉着小提琴,还伴奏有亨德尔的《舒缓曲》,报务员们怔住了,他们大声地叫喊着同伴的名字,纷纷把耳机传递给同伴听,果然,大家都清晰地听到说话声和乐曲声,最后还听到亲切的祝福声,几分钟后,耳机中又传出那听惯了的电码声。其实这并不是什么奇迹的出现,而是由美国物理学家费森登主持和组织的人类历史上第一次无线电广播。这套广播设备是由费森登花了4年的时间设计出来的,包括特殊的高频交流无线电发射机和能调制电波振幅的系统,从这时开始,电波就能载着声音开始展翅飞翔了。在这之前,也有无数人在无线电研究上取得了成果,其中最出名的就是无线电广播之父——美国人巴纳特·史特波斐德,他于1886年便开始研究,经过十几年不懈努力而取得了成功,在1902年,他在肯塔基州穆雷市进行了第一次无线电广播。他们在穆雷广场放好话筒,由巴纳特·史特波斐德的儿子在话筒前说话、吹奏口琴,他在附近的树林里放置了5台矿石收音机,均能清晰地听到说话和口琴声,试验获得了成功。之后又在费城进行了广播,并获得了专利权。现在,州立穆雷大学仍树有“无线电广播之父——巴纳特·史特波斐德”的纪念碑。

1907年11月8日,法国科学家爱德华·贝兰当众表演相片传真——用电传送图片。一般认为,是爱德华·贝兰使传真技术走向实用化。

1920年2月23日,世界上第一个无线电话新闻服务开通。

1925年10月2日,英国发明家贝尔德在前人研究的基础上终于制成了世界上第一台有实用价值的电视机。

1941年,摩托罗拉生产出了美军参战时唯一的便携式无线电通讯工具——5磅重手持对讲无线电样机及此后的SCR-300型高频率调频背负式通话机

1946: ENIAC (Electronic Numerical Integrator 和 Computer): 第一台真正意义上的数字电子计算机。开始研制于1943年,完成于1946年。负责人是John W. MauchlyJ.Presper Eckert。重30吨,18000个电子管,功率25千瓦。主要用于计算弹道和氢弹的研制。

1948年6月30日,贝尔实验室向公众展示了用以取代真空管的晶体管

1951: UNIVAC-1:第一台商用计算机系统。设计者:J. Presper Eckert John Mauchly。被美国人口普查部门用于人口普查,标志着计算机的应用进入了一个新的、商业应用的时代。

1956年,第一个无线电寻呼机在摩托罗拉问世。

1957年10月4日,原苏联发射了第一颗人造地球卫星,地球上第一次收到了来自人造卫星的电波。它不仅标志着航天时代的开始, 也意味着一个利用卫星进行通信的时代即将到来。

1958年9月12日: 在Robert NoyceINTEL公司的创始人)的领导下,发明了集成电路

1960年8月12日,美国国防部把覆有铝膜的、直径为30米的气球卫星“回声1号”(Echo I)发射到距离地面高度约1600公里的圆形轨道上,进行通信试验。这是世界第一个“无源通信卫星”。由于这颗卫星上没有电源,故称之为“无源卫星”。它只能将信号反射,为地球上的其它地点所接收到,从而实现通信。但由于这种方式的效率太低,没有多大实用价值。

1961年:美国麻省理工学院的伦纳德.克兰罗克(Leonard Kleinrock)博士发表了分组交换技术的论文,该技术后来成了互联网的标准通信方式。

1963年8月23日,肯尼迪总统引用莫尔斯拍发的第一份公众电报报文“上帝创造了何等奇迹”结束了他与尼日利亚总理会话,这是经“辛康姆(Syncom)”通信卫星的第一次电话会话,声音传播了72000多公里。

1964年8月19日,美国发射了“同步3号”(Syncom Ⅲ)卫星。这是世界上第一颗地球同步静止轨道通信卫星。

1958年12月18日,美国发射了第一颗通信卫星,由于技术上的原因,仅仅工作了13天。从此,卫星通信进入实验阶段。1963年至1964年美国发射了三颗实验性地球同静止轨道卫星,只有第三颗卫星“同步3号”完全成功。

1964年8月20日,成立了以美国通信卫星有限公司为首的“国际通信卫星财团”,次年更名为“国际通信卫星组织”,即著名的INTELSAT。这一组织总部设在华盛顿,其宗旨是建议和发展一个全球通信卫星系统,一视同仁地供世界各国使用,以便改进其电信服务。确立了卫星通信体制和标准地球站的性能标准,卫星通信业务从此正式成为一种国际间的商用业务。

1969年:美国国防部开始起动具有抗核打击性的计算机网络开发计划“ARPANET”。

1971年:位于美国剑桥的BBN科技公司的工程师雷.汤姆林森(Ray Tomlinson)开发出了电子邮件。此后ARPANET的技术开始向大学等研究机构普及。

1976年6月,世界上第一张电话卡在意大利诞生。

1977年,世界上第一个商用光纤通信系统在美国芝加哥的两个电话局(相距7公里)之间开通,使用多模光纤,波长0.85μm,速率为44.736Mbit/s。

1978年贝尔实验室的科学家们在芝加哥试验成功了世界上第一个蜂窝移动通信系统,并于1983年正式投入商用。这是移动通信发展史上的重大发明。

1978年在美国芝加哥开通了第一个移动电话通信系统

1983年:ARPANET宣布将把过去的通信协议“NCP(网络控制协议)”向新协议“TCP/IP(传输控制协议/互联网协议)”过渡。

1984年美国苹果计算机公司推出了第一台多媒体计算机。

1988年:美国伊利诺斯大学的学生(当时)史蒂夫.多那(Steve Dorner)开始开发电子邮件软件“Eudora”。

1988: 光计算机投入开发,用光子代替电子,可以提高计算机的处理速度

1991年:CERN(欧洲粒子物理研究所)的科学家提姆.伯纳斯李(Tim Berners-Lee)开发出了万维网(World Wide Web)。他还开发出了极其简单的浏览器(浏览软件)。此后互联网开始向社会大众普及。

1993年:伊利诺斯大学美国国家超级计算机应用中心的学生马克.安德里森(Mark Andreesen)等人开发出了真正的浏览器“Mosaic”。该软件后来被作为Netscape Navigator推向市场。此后互联网开始得以爆炸性普及。正是因为通过采用具有扩展性的通信协议TCP/IP,才能够将不同网络相互连接。因此,开发TCP/IP协议的UCLA(加州大学洛杉矶分校)的学生(当时)文顿.瑟夫(Vinton G. Cerf)等如今甚至被誉为“互联网之父”。

1998年9月21日,英国捷足先登,成为世界上第一个试播数字电视的国家。

中国通信简史
1871年,英国、俄罗斯、丹麦敷设的香港至上海、长崎至上海的水线,全长2237海里。于1871年4月,违反清政府不得登陆的规定,由丹麦大北电报公司出面,秘密从海上将海缆引出,沿扬子江、黄浦江敷设到上海市内登陆,并在南京路12号设立报房。于1871年6月3日开始通报。这是中国的第一条电报水线和在上海租界设立的电报局。

1873年,法国驻华人员威基杰(S·A·Viguer)参照《康熙字典》的部首排列方法,挑选了常用汉字6800多个,编成了第一部汉字电码本,名为《电报新书》。后由我国的郑观应将其改编成为《中国电报新编》。这是中国最早的汉字电码本。中国人最早研制的电报机华侨商人王承荣从法国回国后,与福州的王斌研制出我国第一台电报机,并呈请政府自办电报。清政府拒不采纳。

1875年,福建巡抚丁日昌积极倡导创办电报。1875年在福建船政学堂附设了电报学堂,培训电报技术人员。这是中国第一所电报学堂。1877年,福建巡抚丁日昌利用去台湾视事的机会提出设立台湾电报局,拟定了修建电报线路的方案,并派电报学堂学生苏汝灼、陈平国等专司其事。先由旗后(即今高雄)造至府城(即今台南)。负责工程的是武官沈国光。于1877年8月开工,同年10月11日完工,全线长95华里。这是中国人自己修建、自己掌管的第一条电报线。

1879年,李鸿章在其所辖范围内修建大沽(炮台)、北塘(炮台)至天津,以及从天津兵工厂至李鸿章衙门的电报线路。这是中国大陆上自主建设的第一条军用电报线路。

1880年,李鸿章在天津设立电报总局,派盛宣怀为总办。并在天津设立电报学堂,聘请丹麦人博尔森和克利钦生为教师,委托大北电报公司向国外订购电信器材,为建设津沪电报线路作准备。1881年,从上海、天津两端同时开工,至12月24日,全长3075华里的津沪电报线路全线竣工。1881年12月28日正式开放营业,收发公私电报,全线在紫竹林、大沽口、清江浦、济宁、镇江、苏州、上海七处设立了电报分局。这是中国自主建设的第一条长途公众电报线路。

1882年2月21日,丹麦大北电报公司在上海开通了第一个人工电话交换所。当时有用户二十多家,每个话机年租金为银元150元。

1887年,在当时的台湾巡抚刘铭传的主持下,花费重金敷设了长达433里的福州至台湾的电报水线--闽台海缆,于1887年竣工。它使台湾与大陆联通一气,对台湾的开发起了重要作用。这是中国自主建设的第一条海底电缆

1889年,当时在安徽主管安庆电报业务的彭名保设计制造成我国第一部电话机,取名为"传声器",通话距离最远可达300华里。

1899年,我国最早使用无线电通信的地区是广州。早在1899年,就在广州督署、马口、前山、威远等要塞以及广海、宝壁、龙骧、江大、江巩等江防军舰上设立无线电机。

1900年,南京首先自行开办了磁石式电话局,以后苏州、武汉、广州、北京、天津、上海、太原、沈阳等城市,在1900年到1906年之间也先后自行开办了市内电话局。使用的都是磁石式电话交换机

1901年,丹麦人濮尔生趁八国联军入侵中国之机,在天津私设电话所,称为"电铃公司"。1901年,该公司将电话线从天津伸展到北京,在北京城内私设电话,发展市内用户不到百户,都是使馆、衙署等。并开通了北京和天津之间的长途电话。

1905年,7月,北洋大臣袁世凯在天津开办了无线电训练班,聘请意大利人葛拉斯为教师。他还托葛拉斯代购马可尼猝灭火花式无线电机,在南苑、保定、天津等处行营及部分军舰上装用,用无线电进行相互联系。1906年,因广东琼州海缆中断,在琼州和徐闻两地设立了无线电机,在两地间开通了民用无线电通信。这是中国民用无线电通信之始。

1907年,北京市内电话改为共电式,4月1日,内外城电话一律改为共电式,月租费墙机由4元改为5元,桌机由5元改为6元,通话质量改善,用户已发展到2000户以上。同年5月15日,英商上海华洋德律风公司的万门共电式交换设备投入使用。

1908年,英商在上海英租界的汇中旅馆私设了一部无线电台,与海上船舶通报。后由清政府收买,移装到上海电报总局内,这是上海地区最早的无线电台。

1911年,德商西门子德律风公司向清政府申请,要求在北京、南京设立无线电报机,进行远距离无线电通信试验。电台分设在北京东便门和南京狮子山,通报试验结果良好。辛亥革命时,南北有线电通信阻断,南北通信就靠这两地的试验电台沟通。

1912年,即民国元年,接管清政府邮传部,改组为交通部,设电政、邮政、路政、航政四个司。是年:上海电报局开始用打字机抄收电报。京津长途电话线路加装加感线圈(即普平线圈负载线圈),提高通话质量。国际无线电报公会规定我国无线电的呼号范围为XNA--XSZ。

1913年8月,交通部传习所设有线电工程班和高等电气工程班,分习有线电、无线电各项工程。同年,北京设立邮电学校。设高等班(二年毕业)和中等班(一年毕业)。

1919年4月增设"电话专修班"(入学学生以国内外大专学校电机科毕业生为限),招收学员20名。成立北京无线电报局,装设5千瓦无线电发报机,地址在东便门外。1919年4月,北京无线电报局迁至天坛。在北京无线电报局东便门原址设立远程收报处,应用真空管式无线电接收机直接接收欧美各国的广播新闻。6月28日,将直接收到的中国出席巴黎和会代表拒签对德和约的消息,传报给正在总统府前静坐示威的学生,从此打破了外商大北、大东、太平洋三家电报公司垄断传递国外新闻的局面

1920年9月1日,中国加入国际无线电报公约

1921年1月7日,中国加入国际电报公约(万国电报公约1923年1月23日,中国最早与外国通报的无线电台建立。

5月,由英商承建的喀什噶尔电台建成,与印度北撒孚通报,效果清晰良好。这是我国最先与外国进行无线电通报的电台,但该电台与乌鲁木齐通报不佳,英商因此而悄然溜走。

1924年3月29日,上海华洋德律风公司在租界装设了爱立信生产的自动电话交换机投入使用。这是中国最早使用的自动电话交换机

1924年,在沈阳故宫八角亭先建立了无线电接收机,接收世界各国的新闻,并与德国、法国订立了单向通信(即单向接收欧洲发至中国的电报)。1924年秋,北大营长波电台竣工,装设了10千瓦真空管发报机,实现了与迪化(今新疆乌鲁木齐)和云南的远程通信。

1927年6月,沈阳大型短波电台竣工,装设了10千瓦德制无线电发报机。年底,成立了沈阳国际无线电台,与德国建立了双向通报电路。这是中国与欧洲直接通信之始。1928年,又增设了美制10千瓦短波发报机。沈阳国际无线电台承接转发北京、上海、天津、汉口等各地的国际电报,成为当时我国最大的国际电台。1928年,这一年全国各地新建了27个短波无线电台。

1929年1月14日,上海建设了功率为500瓦的短波无线电台,开始与菲律宾通报,并由菲律宾中转发往欧美的电报。

1930年12月,与旧金山、柏林、巴黎建立了直达无线电报通信。正式开通中美、中德、中法电路。这是当时唯一由国家经营的国际电信通信机构。上海南京间开办真迹电报。

1931年起,山东、江苏、浙江、安徽、河北、湖南等省先后开办省内长途电话业务。浙江省的长途电话沟通了全省各县。我国第一条长途电话地下电缆建成。广东建设了广州、香港之间的长途电话地下电缆,有线三十余对,全线长160公里。这是我国第一条地下长途电话电缆。1931年--1934年,上海、南京、天津、青岛、广州、杭州、汉口等城市陆续开办市内自动电话局。

1933年,中国电报通信首次使用打字电报机

1934年1月起,交通部提出建设"九省联络长途电话"的计划,计划建设江苏、浙江、安徽、江西、湖北、湖南、河南、山东、河北等九省联络长途电话线路,干线总长3173公里,于1935年8月竣工。

1936年,浙江省电话局首先在杭州、温州间装设德制的单路载波电话机。这是中国最早使用的载波电话

1936年,中国上海与日本东京之间开通了无线电话电路。这是中国第一条国际无线电话电路。

1937年,中国在长途干线上开始装用单路或三路载波机。

1942年,中美试办无线电相片传真。

1943年,中国利用载波电话电路试通双工音频电报

1946年,中国开始建设特高频(超短波)电路。

1947年,上海国际电台开放电传机电路。

1948年,上海、旧金山间开放单向无线电相片传真。

1950年12月12日,我国第一条有线国际电话电路--北京至莫斯科的电话电路开通。经由苏联转接通往东欧各国的国际电话电路也陆续开通。

1950年6月,开始建设的北京国际电台的中央收信台和中央发信台,于1951年相继竣工。这是新中国第一个重点通信建设工程。

1952年9月10日,北京至上海的相片传真业务开放。9月24日,北京至莫斯科的国际相片传真业务开放。我国首次开通明线十二路载波电话电路。

1952年9月30日,第一套明线12路载波机(J2)装机,开通北京至石家庄的载波电路。

1954年,研制成功60千瓦短波无线电发射机

1956年,上海试制成功55型电传打字电报机

1956年2月28日,北京长途电话局开放会议电话业务。首次会议电话会议为中华全国总工会召开的十省市电话会议。

1958年,上海试制成功第一部纵横制自动电话交换机,第一套国产明线12路载波电话机研制成功

1959年,第一套60路长途电缆载波电话机研制成功,北京与莫斯科之间开通国际用户电报业务,1月20日正式开放北京市内电话开始由五位号码向六位号码过渡

1963年,120路高频对称电缆研制成功

1964年,北京至石家庄7×4高频电缆60路载波试验段建成,开始试通电报、电话业务。开始研制晶体管载波电话机

1966年,我国第一套长途自动电话编码纵横制交换机研制成功,在北京安装使用

1967年,电子式中文译码机样机试制成功,在上海安装试用

1970年,960路微波通信系统Ⅰ型机研制成功,我国第一颗人造卫星(东方红1号)发射成功。

1972年,北京开始建设地球站一号站,1973年建成投产。

1974年,北京卫星地球站二号站建成投产,通信容量为132条话路和一条双向彩色电视。通过印度洋上空的国际通信卫星与亚非各国和地区开通直达电路。-研制成功石英光纤

1978年,120路脉码调制系统通过鉴定。-研制成功多模光纤光缆

1980年,64路自动转报系统(DJ5-131型)研制成功

1982年,首次在市内电话局间使用短波长局间中继光纤通信系统。-256线程控用户电报自动交换系统研制成功并投户使用。-我国自行设计的8频道公用移动电话系统在上海投入运营。

1983年9月16日,上海用150MHz频段开通了我国第一个模拟寻呼系统。-4380路中同轴电缆载波系统研制成功,并通过国家鉴定。

1984年4月8日,我国的DFH-2(东方红二号)试验通信卫星成功发射,定点高度为35786公里,4月16日定点于东经125°E赤道上空。通过该星进行了电视传输、声音广播、电话传送等试验。我国开始在长途通信线路上使用单模光纤,进入了第三代光纤通信系统。

1984年5月1日,广州用150MHz频段开通了我国第一个数字寻呼系统。程控中文电报译码机通过鉴定并推广使用。首次具备国际直拨功能的编码纵横制自动电话交换机(HJ09型)研制成功。

1985年,上海贝尔公司组装第一批S-1240程控交换机,广州与香港、深圳、珠海开通电子邮件。深圳发行了我国第一套电话卡,共3枚,面值87元。我国正式经国际卫星组织的C频段全球波束转发中央电视台的电视节目。北京至南极无线电话通话成功。这是我国电信史上最远距离的短波通信

1986年,7月1日,以北京为中心的国内卫星通信网建成投产。2日,我国第二颗实用通信卫星发射成功。第一台局用程控数字电话交换机(DS-2000)研制成功。

1987年,第一个长距离架空光缆通信系统(34Mb/s)在武汉至荆州、沙市间试通。

1987年9月20日,钱天白教授发出了我国第一封电子邮件,此为中国人使用因特网之始。

1987年11月,广州开通了我国第一个移动电话局,首批用户有700个。-我国第一个160人工信息台在上海投入使用。

1988年,第一个实用单模光纤通信系统(34Kb/s)在扬州、高邮之间开通,全长为75公里。

1988年3月27日,我国分别发射了实用通信卫星。

1988年5月9日,北京、波恩国际卫星数字式电视会议系统试通。

1989年,第一条1920路(140Mb/s)单模长途干线在合肥、芜湖间建成开通

1989年5月,我国的第一个公用分组交换网通过鉴定,并于11月正式投产使用。1989年6月,广东省珠江三角洲首先实现了移动电话自动漫游


1990年7月,上海引进美国摩托罗拉公司的800MC集群调度移动通信系统。140Mb/s数字微波通信系统研制成功。

1991年,一万门程控数字市内电话交换机通过鉴定。1920路(6GHz)大容量数字微波通信系统和一点对多点微波通信设备通过鉴定。

1991年3月,第一个ISDN(综合业务数字网)的模型网在北京完成联网试验,并于通过了技术鉴定。622Mb/s光纤通信数字复用设备(五次群复用设备)研制成功,3月通过了技术鉴定。

1991年11月15日,上海首先在150MHz频段上开通汉字寻呼系统

1992年7月,我国第一个168自动声讯台在广东省南海开通。

1993年9月19日,我国第一个数字移动电话通信网于在浙江省嘉兴市首先开通

1994年10月,我国第一个省级数字移动通信网在广东省开通,容量为5万门。

1998年5月15日,北京电信长城CDMA网商用试验网--133网,在北京、上海、广州、西安投入试验。

1999年1月14日,我国第一条开通在国家一级干线上的,传输速率为8×2.5Gb/s的密集波分复用DWDM)系统通过了信息产业部鉴定,使原来光纤的通信容量扩大了8倍。

转自:“http://baike.c114.net/view.asp?id=9583-6DA001DB&word=通信”

posted @ 2010-09-26 15:18 编码者-thinker 阅读(648) | 评论 (0)编辑 收藏

2010年1月15日

一个关于凯撒编码与解码的C程序源码 有意见多多提,

 

 1//凯撒加密算法就是将D设置为3时的加密方法。下面是用C实现的加密模块。
 2
 3//////////////////////////////////////////////////////////////////////////
 4//
 5//凯撒加密算法基本原理
 6//参数:
 7// D   : 移位数
 8// data : 原始数据
 9// result : 返回结果
10// len   : 原始数据长度
11//
12void func1(int D,const char* data,char* result, int len){
13// 凯撒加密算法变形
14for (int i = 0;i < len;i++)
15{
16   int val = (data[i]+D);
17   if (val > (int)'z')
18   {
19    val = (int)(val-26);
20   }

21   //cout << (char)val ;
22   result[i] = (char)val;
23}

24//cout << endl;
25}

26
27//////////////////////////////////////////////////////////////////////////
28//
29//凯撒解密算法基本原理
30//参数:
31// D   : 回移位数
32// data : 编码后数据
33// result : 原始数据
34// len   : 数据长度
35//
36void func2(int D,const char* data,char* result, int len){
37// 凯撒加密算法变形
38for (int i = 0;i < len;i++)
39{
40   if (data[i] < 'A' || data[i] > 'Z')
41   {
42    result[i] = data[i];
43    continue;
44   }

45   if (data[i] >= 'A' && data[i] <= 'E')
46   {
47    char val = char(data[i] + 'V' - 'A');
48    result[i] = (char)val;
49   }
else{
50    result[i] = (char)(data[i] - D);
51   }

52}

53}

54

posted @ 2010-01-15 17:01 编码者-thinker 阅读(1435) | 评论 (0)编辑 收藏

2009年12月9日

面试题中的细节,你注意过么?

见过下面的这段代码吗?
unsigned char A[255],k;
cout 
<< UCHAR_MAX << endl;
for ( k = 0;k <= 255;k++)
{
   A[k] 
= k;
}

for (k = 0;k <=254;k++)
{
   cout 
<< A[k] << endl;
}

运行结果会是死循环的!!!
想过为什么吗?
k是unsigned char 类型的变量,就是说它是一个字节大小,值域范围是[0-255],
当k循环到255后还要加1,结果k的值变成了0了(相信学过计算机系统结构的都知道为什么),
所以相当于没有结束条件而无限制的死循环了。

posted @ 2009-12-09 15:13 编码者-thinker 阅读(180) | 评论 (0)编辑 收藏

仅列出标题  
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜