当前位置:文档之家› MFC疑难注解:CAsyncSocket及CSocket

MFC疑难注解:CAsyncSocket及CSocket

MFC疑难注解:CAsyncSocket及CSocket
MFC疑难注解:CAsyncSocket及CSocket

MFC疑难注解:CAsyncSocket及CSocket

MFC对SOCKET编程的支持其实是很充分的,然而其文档是语焉不详的。以至于大多数用VC编写的功能稍

复杂的网络程序,还是使用API的。故CAsyncSocket及CSocket事实上成为疑难,群众多敬而远之。余

好事者也,不忍资源浪费,特为之注解。

一、CAsyncSocket与CSocket的区别

前者是异步通信,后者是同步通信;前者是非阻塞模式,后者是阻塞模式。另外,异步非阻塞模式有

时也被称为长连接,同步阻塞模式则被称为短连接。为了更明白地讲清楚两者的区别,举个例子:

设想你是一位体育老师,需要测验100位同学的400米成绩。你当然不会让100位同学一起起跑,因为当

同学们返回终点时,你根本来不及掐表记录各位同学的成绩。

如果你每次让一位同学起跑并等待他回到终点你记下成绩后再让下一位起跑,直到所有同学都跑完。恭

喜你,你已经掌握了同步阻塞模式。

你设计了一个函数,传入参数是学生号和起跑时间,返回值是到达终点的时间。你调用该函数100次,

就能完成这次测验任务。这个函数是同步的,因为只要你调用它,就能得到结果;这个函数也是阻塞的,

因为你一旦调用它,就必须等待,直到它给你结果,不能去干其他事情。

如果你一边每隔10秒让一位同学起跑,直到所有同学出发完毕;另一边每有一个同学回到终点就记录成

绩,直到所有同学都跑完。恭喜你,你已经掌握了异步非阻塞模式。

你设计了两个函数,其中一个函数记录起跑时间和学生号,该函数你会主动调用100次;另一个函数记

录到达时间和学生号,该函数是一个事件驱动的callback函数,当有同学到达终点时,你会被动调用。

你主动调用的函数是异步的,因为你调用它,它并不会告诉你结果;这个函数也是非阻塞的,因为你一

旦调用它,它就马上返回,你不用等待就可以再次调用它。但仅仅将这个函数调用100次,你并没有完

成你的测验任务,你还需要被动等待调用另一个函数100次。

当然,你马上就会意识到,同步阻塞模式的效率明显低于异步非阻塞模式。那么,谁还会使用同步阻塞

模式呢?

不错,异步模式效率高,但更麻烦,你一边要记录起跑同学的数据,一边要记录到达同学的数据,而且

同学们回到终点的次序与起跑的次序并不相同,所以你还要不停地在你的成绩册上查找学生号。忙乱之

中你往往会张冠李戴。

你可能会想出更聪明的办法:你带了很多块秒表,让同学们分组互相测验。恭喜你!你已经掌握了多线

程同步模式!

每个拿秒表的同学都可以独立调用你的同步函数,这样既不容易出错,效率也大大提高,只要秒表足够

多,同步的效率也能达到甚至超过异步。

可以理解,你现的问题可能是:既然多线程同步既快又好,异步模式还有存在的必要吗?

很遗憾,异步模式依然非常重要,因为在很多情况下,你拿不出很多秒表。你需要通信的对端系统可能

只允许你建立一个SOCKET连接,很多金融、电信行业的大型业务系统都如此要求。

现在,你应该已经明白了:CAsyncSocket用于在少量连接时,处理大批量无步骤依赖性的业务。CSocket

用于处理步骤依赖性业务,或在可多连接时配合多线程使用。

二、CAsyncSocket异步机制

当你获得了一个异步连接后,实际上你扫除了发送动作与接收动作之间的依赖性。所以你随时可以发包,

也随时可能收到包。发送、接收函数都是异步非阻塞的,顷刻就能返回,所以收发交错进行着,你可以

一直工作,保持很高的效率。但是,正因为发送、接收函数都是异步非阻塞的,所以仅调用它们并不能

保障发送或接收的完成。例如发送函数Send,调用它可能有4种结果:

1、错误,Send()==SOCKET_ERROR,GetLastError()!=WSAEWOULDBLOCK,这种情况可能由各种网络问题导

致,你需要马上决定是放弃本次操作,还是启用某种对策

2、忙,Send()==SOCKET_ERROR,GetLastError()!=WSAEWOULDBLOCK,导致这种情况的原因是,你的发送

缓冲区已被填满或对方的接受缓冲区已被填满。这种情况你实际上不用马上理睬。因为CAsyncSocket会

记得你的Send WSAEWOULDBLOCK了,待发送的数据会写入CAsyncSocket内部的发送缓冲区,并会在不忙的

时候自动调用OnSend,发送内部缓冲区里的数据。

3、部分完成,0

中剩余的空位不足以容纳你这次需要发送的全部数据。处理这种情况的通常做法是继续发送尚未发送的

数据直到全部完成或WSAEWOULDBLOCK。这种情况很容易让人产生疑惑,既然缓冲区空位不足,那么本次

发送就已经填满了缓冲区,干嘛还要继续发送呢,就像WSAEWOULDBLOCK了一样直接交给OnSend去处理剩

余数据的发送不是更合理吗?然而很遗憾,CAsyncSocket不会记得你只完成了部分发送任务从而在合适

的时候触发OnSend,因为你并没有WSAEWOULDBLOCK。你可能认为既然已经填满缓冲区,继续发送必然会

WSAEWOULDBLOCK,其实不然,假如WSAEWOULDBLOCK是由于对方读取接收缓冲区不及时引起的,继续发送

的确很可能会WSAEWOULDBLOCK,但假如WSAEWOULDBLOCK是由于发送缓冲区被填满,就不一定了,因为你

的网卡处理发送缓冲区中数据的速度不见得比你往发送缓冲区拷贝数据的速度更慢,这要取决与你竞争

CPU、内存、带宽资源的其他应用程序的具体情况。假如这时候CPU负载较大而网卡负载较低,则虽然刚

刚发送缓冲区是满的,你继续发送也不会WSAEWOULDBLOCK。

4、完成,Send(pBuf,nLen)==nLen

与OnSend协助Send完成工作一样,OnRecieve、OnConnect、OnAccept也会分别协助Recieve、Connect、

Accept完成工作。这一切都通过消息机制完成:

在你使用CAsyncSocket之前,必须调用AfxSocketInit初始化WinSock环境,而AfxSocketInit会创建一个

隐藏的CSocketWnd对象,由于这个对象由Cwnd派生,因此它能够接收Windows消息。所以它能够成为高层

CAsyncSocket对象与WinSock底层之间的桥梁。例如某CAsyncSocket在Send时WSAEWOULDBLOCK了,它就会

发送一条消息给CSocketWnd作为报告,CSocketWnd会维护一个报告登记表,当它收到底层WinSock发出的

空闲消息时,就会检索报告登记表,然后直接调用报告者的OnSend函数。所以前文所说的CAsyncSocket会

自动调用OnXxx,实际上是不对的,真正的调用者是CSocketWnd——它是一个CWnd对象,运行在独立的线

程中。

使用CAsyncSocket时,Send流程和Recieve流程是不同的,不理解这一点就不可能顺利使用CAsyncSocket。

MSDN对CAsyncSocket的解释很容易让你理解为:只有OnSend被触发时你Send才有意义,你才应该Send,

同样只有OnRecieve被触发时你才应该Recieve。很不幸,你错了:

你会发现,连接建立的同时,OnSend就第一次被触发了,嗯,这很好,但你现在还不想Send,你让OnSend

返回,干点其他的事情,等待下一次OnSend试试看?实际上,你再也等不到OnSend被触发了。因为,除

了第一次以外,OnSend的任何一次触发,都源于你调用了Send,但碰到了WSAEWOULDBLOCK!

所以,使用CAsyncSocket时,针对发送的流程逻辑应该是:你需两个成员变量,一个发送任务表,一个

记录发送进度。你可以,也应该,在任何你需要的时候,主动调用Send来发送数据,同时更新任务表和

发送进度。而OnSend,则是你的负责擦屁股工作的助手,它被触发时要干的事情就是根据任务表和发送

进度调用Send继续发。若又没能将任务表全部发送完成,更新发送进度,退出,等待下一次OnSend;若

任务表已全部发送完毕,则清空任务表及发送进度。

使用CAsyncSocket的接收流程逻辑是不同的:你永远不需要主动调用Recieve,你只应该在OnRecieve中等

待。由于你不可能知道将要抵达的数据类型及次序,所以你需要定义一个已收数据表作为成员变量来存储

已收到但尚未处理的数据。每次OnRecieve被触发,你只需要被动调用一次Recieve来接受固定长度的数据,

并添加到你的已收数据表后。然后你需要扫描已收数据表,若其中已包含一条或数条完整的可解析的业务

数据包,截取出来,调用业务处理窗口的处理函数来处理或作为消息参数发送给业务处理窗口。而已收数

据表中剩下的数据,将等待下次OnRecieve中被再次组合、扫描并处理。

在长连接应用中,连接可能因为各种原因中断,所以你需要自动重连。你需要根据CAsyncSocket的成员变

量m_hSocket来判断当前连接状态:if(m_hSocket==INVALID_SOCKET)。当然,很奇怪的是,即使连接已经

中断,OnClose也已经被触发,你还是需要在OnClose中主动调用Close,否则m_hSocket 并不会被自动赋值

为INVALID_SOCKET。

在很多长连接应用中,除建立连接以外,还需要先Login,然后才能进行业务处理,连接并Login是一个步

骤依赖性过程,用异步方式处理反而会很麻烦,而CAsyncSocket是支持切换为同步模式的,

你应该掌握在

适当的时候切换同异步模式的方法:

DWORD dw;

//切换为同步模式

dw=0;

IOCtl(FIONBIO,&dw);

...

//切换回异步模式

dw=1;

IOCtl(FIONBIO,&dw);

三、CSocket的用法

CSocket在CAsyncSocket的基础上,修改了Send、Recieve等成员函数,帮你内置了一个用以轮询收发缓冲区

的循环,变成了同步短连接模式。

短连接应用简单明了,CSocket经常不用派生就可以直接使用,但也有些问题:

1、用作监听的时候

曾经看到有人自己创建线程,在线程中创建CSocket对象进行Listen、Accept,若Accept 成功则再起一个线

程继续Listen、Accept。。。可以说他完全不理解CSocket,实际上CSocket的监听机制已经内置了多线程机

制,你只需要从CSocket派生,然后重载OnAccept:

//CListenSocket头文件

class CListenSocket : public CSocket

{

public:

CListenSocket(HWND hWnd=NULL);

HWND m_hWnd; //事件处理窗口

virtual void OnAccept(int nErrorCode);

};

//CListenSocket实现文件

#include "ListenSocket.h"

CListenSocket::CListenSocket(HWND hWnd){m_hWnd=hWnd;}

void CListenSocket::OnAccept(int nErrorCode)

{

SendMessage(m_hWnd,WM_SOCKET_MSG,SOCKET_CLNT_ACCEPT,0); CSocket::OnAccept(nErrorCode);

}

//主线程

...

m_pListenSocket=new CListenSocket(m_hWnd);

m_pListenSocket->Create(...);

m_pListenSocket->Listen();

...

LRESULT CXxxDlg::OnSocketMsg(WPARAM wParam, LPARAM lParam) {

UINT type=(UINT)wParam;

switch(type)

{

case SOCKET_CLNT_ACCEPT:

{

CSocket* pSocket=new CSocket;

if(!m_pListenSocket->Accept(*pSocket))

{

delete pSocket;

break;

}

...

}

...

}

}

2、用于多线程的时候

常看到人说CSocket在子线程中不能用,其实不然。实际情况是:

直接使用CSocket动态创建的对象,将其指针作为参数传递给子线程,则子线程中进行收发等各种操作都

没问题。但如果是使用CSocket派生类创建的对象,就要看你重载了哪些方法,假如你仅重载了OnClose,

则子线程中你也可以正常收发,但不能Close!

因为CSocket是用内部循环做到同步的,并不依赖各OnXxx,它不需要与CSocketWnd交互。但当你派生并重

载OnXxx后,它为了提供消息机制就必须与CSocketWnd交互。当你调用AfxSocketInit 时,你的主线程会获

得一个访问CSocketWnd的句柄,对CSocketWnd的访问是MFC自动帮你完成的,是被隐藏的。而你自己创建

的子线程并不自动具备访问CSocketWnd的机制,所以子线程中需要访问CSocketWnd的操作都会失败。

常看到的解决办法是给子线程传递SOCKET句柄而不是CSocket对象指针,然后在子线程中创建CSocket临时

对象并Attach传入的句柄,用完后再Dettach并delete临时对象。俺没有这么干过,估计是因为Attach方法

含有获取CSocketWnd句柄的内置功能。

俺的解决方案还是使用自定义消息,比如俺不能在子线程中Close,那么,俺可以给主线程发送一条消息,

让主线程的消息处理函数来完成Close,也很方便。

CSocket一般配合多线程使用,只要你想收发数据,你就可以创建一个CSocket对象,并创建一个子线程来

进行收发。所以被阻塞的只是子线程,而主线程总是可以随时创建子线程去帮它干活。由于可能同时有很

多个CSocket对象在工作,所以你一般还要创建一个列表来储存这些CSocket对象的标识,这样你可能通过

在列表中检索标识来区分各个CSocket对象,当然,由于内存地址的唯一性,对象指针本身就可以作为标识。

相对CAsyncSocket而言,CSocket的运作流程更直观也更简单,至于CSocketFile、CArchive之类的,似乎

也不需要多说什么,就这样结束吧。

计算机常用工具软件试题1

模块一测试题 一、单选题 1.使用PartitionMagic创建新分区时,默认的文件系统类型是() Ext2 2、DOS方式下,要将映像文件恢复到分区中,以下操作正确的是() A、”local”----“disk” -----“to image” B、”local”----“disk” -----“from image” C、”local”----“partition” -----“to partition” D、”local”----“partition” -----“from image” 3、关于windows注册表,下列说法错误的是() A、注册表只存储了有关计算机的软件信息,硬件配置信息无法保存 B、注册表是一个树状分层的数据库系统 C、有些计算机病毒会恶意改注册表,达到破坏系统和传播病毒的目的 D、用户可以通过注册表来调整软件的运行性能 4.创建分区时,关于簇的设置,以下说法正确的是() A. 簇的大小与磁盘性能与空间没关系 B.簇的值越大,磁盘性能越好,但空间浪费较大 C. 簇的大小有文件系统格式决定,不能修改 D.只在NTFS文件系统中才有簇的概念,FAT16/FAT32中没有簇 5.关于PartitionMagic的转换分区格式,以下说法正确的是() A.在Windows98中运行PartitionMagic也能完成NTFS、FAT16、FAT32相互转换 B.分区被转换为主分区后,将自动将系统文件复制到该分区使其具有系统启动功能 C.只能将逻辑转换为主分区,但不能将主分区转换为逻辑分区 D.以上说法均不正确 6. PartitionMagic中,要对当前选中的分区格式化操作,可使用( )菜单中的“格式化”命令。 A. 工具 B. 任务 C.分区 D. 文件 7.关于windows的注册表,下列说法错误的是() A、有些计算机病毒会恶意更改注册表,达到破环系统的目的 B、注册表是一个树状分层的数据库系统 C、用户可以通过注册表来调整软件的运行性能 D、注册表只存储了有关计算机的软件信息,硬件配置信息无法保存 8.要删除Dreamweaver应用程序以下方法正确的是() A.直接删除桌面的快捷方式键 B.找到应用程序文件夹将其删除 C.删除开始菜单中的应用程序菜单 D.使用Windows优化大师进行软件智能卸载 9.在计算机中,注册表的数据结构的形状为() A. 星状B、环形状C、网状D、树状 15.以下软件中,不属于系统优化、测试软件的是() A、EVEREST UItimate B、Norton Ghost C、HWiNFO D、Windows 优化大师 10.一键GHOST的功能不包括()。 A、创建内存映像文件 B、为C分区创建备份文件 C、将映像文件还原到另一个硬盘上 D、DOS工具箱功能 11.优化大师不可以使用设置向导优化的是() A、磁盘缓存 B、系统安全 C、文件系统 D、网络系统 优化大师提供的域名解析优化的作用是( ) A 加快系统运行速度 B 加快上网的浏览速度 C 阻截了上网时弹出的窗口 D 清理历史记录 13.在自动优化时,Windows优化大师将注册表进行了备份,生成的备份文件名是() A Auto B Auto Opti C Auto Opti .womb D . 优化大师进行注册表清理时,单用户的系统清理工作主要集中于() A HKEY_CURRENT_USER和HKEY_LOCAL_USERS B. HKEY_CURRENT_USER\HKEY_USERS和HKEY_LOCAL_MACHINE C HKEY_USERS和HKEY_LOCAL_MACHINEE D HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE 15.关于磁盘缓存,以下说法正确的是() A 磁盘缓存可以加速磁盘的读取速度,因此磁盘缓存越大越好 B 磁盘缓存就是在硬盘上开辟的一块存储区域 C 磁盘缓存的大小要视物理内存的大小和任务的多少来决定 D 以上说法均不正确 16.关于Windows优化大师提供的域名解析优化功能,以下说法正确的是() A 必须在互联网接通的情况下才能进行域名解析优化 B 默认情况下,Windows优化大师自动对收藏夹中的网址进行域名解析 C 一般情况下,经常变换IP 地址的网站需要域名解析 D 拥有固定IP 地址的网站根本不需要域名解析服务 17.要想取消开机自启动程序的运行,可使用Windows优化大师系统性能优化中的() A 文件系统优化 B 开机速度优化 C 桌面菜单优化 D 系统安全优化 18.( ) 即以太网上的点对点协议,目前该接入方式广泛应用在ADSL接入方式中。 A ISDN B PPPOE C XDSL D Cable Modem 二.填空题: 1、对于一个FAT16格式的分区容量不超过______。 2、PartitionMagic的最大特点是在___________硬盘数据的情况下,可以进行各种分

一些常用的系统函数

附录B 一些常用的系统函数 SQL Server 2008提供了许多内置函数,使用这些函数可以方便快捷地执行某些操作。这些函数通常用在查询语句中,一般来说,允许使用变量、字段或表达式的地方都可以使用这些内置函数。本附录将介绍一些比较常用的日期函数、字符串函数和类型转换函数。 B.1日期函数 日期和时间函数对日期和时间类型的数据执行操作,并返回一个字符串、数字值或日期和时间值。 1. GETDATE 作用:按 datetime 值的SQL Server 标准内部格式返回当前的系统日期和时间。 返回类型:datetime。 说明:日期函数可用在 SELECT 语句的选择列表或用在查询语句的 WHERE 子句中。 例1. 用 GETDATE 返回系统当前的日期和时间。 SELECT GETDATE() 例2. 在CREATE TABLE语句中使用 GETDATE函数作为列的默认值,这样可简化用户对业务发生日期和时间的输入。此示例创建Employees 表,用 GETDATE函数的返回值作为员工参加工作的默认报到时间。 CREATE TABLE Employees( eid char(11) NOT NULL, ename char(10) NOT NULL, hire_date datetime DEFAULT GETDATE() ) 2.DATEADD 作用:对给定的日期加上一段时间,返回新的 datetime 值。 语法: DATEADD( datepart, number, date ) 其中: Datepart:是与 number 相加的date部分。表B.1列出了有效的 datepart 参数。 表B.1 SQL Server识别的日期部分和缩写形式

实验 常用系统类的使用

实验常用系统类的使用 一、实验目的 了解Java 常用的系统类,包括Java Applet、字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类等的基本使用方法。理解Java 系统类的构成。 二、实验要求 1.进一步了解Applet 类。 2.掌握不同类型的输入输出流类,标准数据流、文件流、数据输入输出流、对象流等。3.掌握数学函数类的使用方法。 4.掌握日期类的使用方法。 5.掌握向量类的使用方法。 三、实验内容 (一)了解Applet 的生命周期 1.编写KY1_1.java 程序文件,源代码如下。 import java.applet.Applet; import java.awt.Graphics; public class KY5_1 extends Applet { StringBuffer buffer=new StringBuffer(); public void init() { addWords("执行了初始化方法init()..."); } public void start() { addWords("执行了开始方法start()..."); } public void stop() { addWords("执行了停止方法stop()..."); } public void destroy() { addWords("执行了清除方法destroy()..."); } void addWords(String s) { System.out.println(s); buffer.append(s); repaint(); } public void paint(Graphics g) {

Java实验三常用系统类的使用

实验三常用系统类的使用 一、实验目的 了解Java 常用的系统类,包括字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类(学习继承内容后做)等的基本使用方法。理解Java 系统类的构成。二、实验要求 1.掌握不同类型的输入输出流类,标准数据流、文件流、数据输入输出流、对象流等。 2.掌握数学函数类的使用方法。 3.掌握日期类的使用方法。 4.掌握向量类的使用方法。 使用数学函数类 Math 是一个最终类,含有基本数学运算函数,如指数运算、对数运算、求平方根、三角函数、随机数等,可以直接在程序中加Math.前缀调用。 1.创建使用Math 类的应用程序KY5_8.java,源程序如下。 import java.util.*; class KY5_8 { public static void main(String args[]) { Random r1=new Random(1234567890L); Random r2=new Random(1234567890L); boolean b=r1.nextBoolean(); // 随机数不为0 时取真值 int i1=r1.nextInt(100); // 产生大于等于0 小于100 的随机数 int i2=r2.nextInt(100); // 同上 double i3=r1.nextDouble(); // 产生大于等于0.0 小于1.0 的随机数 double i4=r2.nextDouble(); // 同上 double d1=Math.sin(Math.toRadians(30.0)); double d2=Math.log(Math.E); double d3=Math.pow(2.0, 3.0); int r=Math.round(33.6F); System.out.println("b 的随机数不为0 时"+b); System.out.println("i1 的随机数为"+i1); System.out.println("i2 的随机数为"+i2); System.out.println("d1 的随机数为"+i3); System.out.println("d2 的随机数为"+i4); System.out.println("30 弧度的正弦值:Math.sin(Math.toRadians(30.0))="+d1); System.out.println("E 的对数值:Math.log(Math.E)="+d2); System.out.println("2 的3 次方:Math.pow(2.0, 3.0)="+d3); System.out.println("33.6F 四舍五入:Math.round(33.6F)="+r); } }

Java实验 常用系统类

实验六常用系统类 【开发语言及实现平台或实验环境】 Windows2000 或XP,JDK1.6与Jcreator4.0 【实验目的】 1.了解Java 常用的系统类,包括Java Applet、字符串类、输入输出流类、数学函数类、日期类、随机数类以及向量类等的基本使用方法。 2.理解Java 系统类的构成。 【实验要求】 1. 进一步了解Applet 类。 2. 掌握字符串类的使用方法。 3. 掌握数学函数类的使用方法。 4. 掌握日期类的使用方法。 5. 掌握向量类的使用方法 【实验内容】 (一)了解Applet 的生命周期 程序运行从开始大结束的过程称为程序的生命周期。独立应用程序的生命周期从main ()方法开始,直到运行结束。而Applet 应用程序的生命周期与浏览器相关。作为浏览器的一部分,Applet 程序何时运行,何时结束都由浏览器控制,Applet 对象只是作为浏览器窗口中运行的一个线程。浏览器与Applet 具有如下关系。 ●在浏览器中打开包含Applet 对象的页面时,创建并初始化其中的Applet 对象。 ●显示Applet 时,启动Applet 线程运行。 ●不显示Applet 时,停止 Applet 线程运行。 ●在浏览器中关闭页面窗口时,销毁Applet 对象。 与此相应,Applet 类中声明了与生命周期相关的4 个方法:init()、start()、stop()、destroy()。4 个方法代表Applet 的4 个活动阶段。 1.创建揭示Applet 生命周期的程序LX5_1.java。 (1)程序功能:本程序包含Applet 的4 个与生命周期相关的方法init()、start()、stop()、destroy()。程序中创建了自定义方法addWords()来显示相应的字符串。addWords 方法首先在标准输出即屏幕上显示字符串参数,然后将字符串添加到字符串缓冲区buffer,通过调用repaint 方法重画页面,首先自动调用updata 方法将当前画面清空,然后再调用paint 方法在指定位置显示字符串。 (2)编写LX5_1.java 程序文件,源代码如下。 import java.applet.Applet; import java.awt.Graphics; public class LX5_1 extends Applet { StringBuffer buffer=new StringBuffer(); public void init() { addWords("执行了初始化方法 init()..."); } public void start() { addWords("执行了开始方法start()...");

最最常用的10大类软件 哪个你还没用过

最最常用的10大类软件哪个你还没用过 如今的软件种类很多,但对于普通的初学者来讲,最最常用的莫过于以下十种软件。对照一下你自己,以下软件哪些你还没有用过?没用过的原因,是不知道呢?还是暂时用不到?你常用的软件如果不在如下之列,能不能悄悄地告诉小编一声,你现在常用的软件有哪些(小编邮箱: soft@https://www.doczj.com/doc/926492960.html,)。 一、操作系统 你在使用什么操作系统?你用的Windows是什么版本? 你知道吗? 操作系统不光是只有Windows一种,常见的还有Linux、Mac OS、Free BSD、Unix/Xenix、OS/2等。其中的Linux操作系统几乎是免费的,甚至它的源代码都是开放的,你是不是对它感兴趣呢?

二、压缩软件 你在使用什么软件压缩或解压文件?你的软件注册了吗?如果不想注册又不愿背上使用盗版的黑锅,一款不用花钱注册的压缩工具7-Zip倒是个不错的选择,而且这款软件 功能很强(下载地址https://www.doczj.com/doc/926492960.html,/soft/3404.html)。 三、办公软件 不知你在用哪一种办公软件?现在,国产办公软件,如金山的WPS Office 2007(下载地址 https://www.doczj.com/doc/926492960.html,/soft/42337.htm)、永中集成Office for Windows 2009个人版(下载地址 https://www.doczj.com/doc/926492960.html,/soft/74538.htm)等均免费了,功能虽然不及微软Office强大,但绝对实用、够用,也很好用。 四、图片管理 其实,可供名正言顺地使用的优秀图像管理软件也不少,目前比较靠前的要数iSee图片专家(下载地址

java常用类及用法

字符串操作:字符串的比较: boolean equals()比较此字符串与指定的对象。 Int compareTo() 比较源与()的大小,两串大小相等返回0 加IgnoreCase()不考虑大小写boolean contains(CharSequence s) 当且仅当此字符串包含 char 值的指定序列时,才返回 true。 字符串的长度与组合: char charAt(int index)返回指定索引处的 char 值。 String concat(String str)将指定字符串联到此字符串的结尾。 int length() 返回此字符串的长度。 获取子串: String substring(int beginIndex) 返回一个从beginIndex到末尾的子串 String substring(int beginIndex, int endIndex) 返回一个从beginIndex到endIndex-1的字串 字符串的转换、替换和分隔: char[] toCharArray() 将此字符串转换为一个新的字符数组。 String toString() 返回此对象本身(它已经是一个字符串!)。 String toLowerCase() 变为全小写 String toUpperCase() 变为全大写 String trim() 返回字符串的副本,忽略前导空白和尾部空白。 String replace(char oldChar, char newChar) 用 newChar 替换此字符串中出现的所有 oldChar,返回新字符 String replaceAll(String regex, String replacement) 使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。 String replaceFirst(String regex, String replacement) 使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的第一个子字符串。 String[] split(String regex) 在给定字符处拆分原字符串为若干字串。 找出相应字符或字串(找不到返回-1) int indexOf() 返回(?)填入的字符(串)在源中的第一个索引;(?,num)从num索引开始查找 int lastIndexOf()返回最后一次出现的指定值索引。 将字符和数值转化为字符串: Static String valueOf() 将()填入的参数(任意、包括Obj)转化为字符串 StringBuilder类:构建: StringBuilder() 构建一个容量为16的空字符串生成器,()填入数字构造指定大小,填入String 构造含有指定字符。 int capacity() 返回当前容量。 char charAt(int index) 指定索引处的 char 值。添改: StringBuilder append() 将特定内容由()传入buffer StringBuilder insert(int offset,?) 将?变量插在此序列的offset 前 void setCharAt(int index, char ch) 改变索引处的字符为ch。 StringBuilder replace(int start, int end, String str) 替换从start至end-1处字符为str StringBuilder reverse() 反转字符序列。删除: StringBuilder delete(int start, int end) 移除从start索引到end-1索引的字符串。 StringBuilder deleteCharAt(int index) 移除此序列指定位置上的 char。查找: int indexOf(String str) 同String用法 int lastIndexOf()同String用法 int length() 返回长度(字符数)。返回值: int capacity() 返回当前容量。

常用办公软件的应用

第3章常用办公软件的应用 第9讲常用办公软件的应用(一) 教学目标及基本要求: 1、了解常用办公软件的种类及其功能。 2、熟练掌握Word 2003的基本操作,文档的创建、编辑和排版。 3、能独立使用Word 2003来创建与编辑文档,排版文档。 教学重点: Word 2003的基本操作,文档的创建、编辑和排版。 教学难点: Word 2003表格的创建与编辑。 教学内容: 1、办公软件及其种类 2、常用办公软件的功能 3、Word 2003的基本操作 4、Word 2003文档的创建与编辑 5、Word 2003文档的排版 教学时间: 1学时 主要内容: 3.1 常用办公软件简介 3.1.1 办公软件及其种类 1.办公软件概述 办公软件(Office Soft)是将现代化办公和计算机技术相结合、为实施办公自动化而开发的计算机程序。一般包括文字处理、桌面排版、演示文稿、电子表格、小型的数据库管理系统(比如Access等)、网页制作软件(如FrontPage等)及电子邮件收发软件(比如Outlook 等)等。 2.办公软件的种类 目前国内主流的办公软件有微软公司开发的Microsoft Office、金山公司开发的WPS Office、永中科技开发的EI Office红旗公司开发的Red Office、上海中标开发的NeoShine Office及共创开源公司开发的Co-Create Office等。 3.1.2 常用办公软件的功能 1.文字处理软件的主要功能 文字处理软件的发展 (1)最早较有影响的是MicroPro公司在于1979年研发的WordStar(文字之星,简称WS),风行于20世纪80年代。 (2)1989年,中国香港金山电脑公司推出的WPS(Word Processing System),是完全针对汉字处理重新开发设计的。优点:字体格式丰富,控制灵活,表格制作方便,下拉菜单直观,模拟显示实用有效。 (3)1983年,MS Word正式推出,1989年Microsoft的文字处理软件Word成为文字处理软件销售的市场主导产品。早期的文字处理软件是以文字为主,现代的文字处理软件则集文字、表格、图形、图像、声音于一体。

常用类的应用

实验一常用类的应用 一. 实验目的 1 熟悉Java类库中常用类; 2 能够熟练应用常用类; 3.进一步掌握Java面向对象程序设计的编程思想 二. 实验内容 1.在字符串“China is a country.”插入“great”,使其变为“China is a great country”, 并将其输出。 代码: package ch4; public class Asd { public static void main(String[] args) { StringBuffer str=new StringBuffer("China is a country."); /*str.insert(10," great"); System.out.println(str); */ int m=str.indexOf("country"); System.out.println(m); str.insert(m,"great "); System.out.println(str); } } 运行结果: 2.随机产生4位验证码,可以是纯数字,也可以是纯字符,也可以是字符和数字混合, 也可以是汉字或算式

代码: package ch4; import java.util.Random; public class Ds{ private static String range = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*&"; public static synchronized String getRandomString(){ Random random = new Random(); StringBuffer result = new StringBuffer(); for ( int i = 0; i < 4; i++ ){ result.append( range.charAt( random.nextInt( range.length() ) ) ); } return result.toString(); } public static void main(String[] args) { System.out.println(getRandomString()); } } 运行结果: 3.(选做)第2题扩展,输入验证码,根据比较输出验证码是否正确;进一步扩展, 若不正确,重复输入,直到验证码正确。 代码: package ch4; import java.util.Scanner; import java.util.Random; public class Aa { public static void main(String[] args) { Random r=new Random(); String str1="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ*&";

常见的通用应用软件名称及所属类别

常见的通用应用软件名称及所属类别 1、文字处理类:记事本Notepad、写字板Wordpad、微软Word、金山WPS、永中Office、Acrobat Reader 2、文字输入类:智能ABC、微软拼音、搜狗拼音、极品五笔、拼音加加、谷歌拼音 3、网页浏览类:微软IE、傲游Maxthon、腾讯TT、Mozilla Firefox 4、杀毒软件类:瑞星、诺顿、卡巴斯基、金山毒霸、江民KV、趋势科技 5、网络聊天类:腾讯QQ、微软MSN、网易POPO、新浪UC、移动飞信、阿里旺旺 6、解/压缩类:WinRAR、WinZip、7-Zip、ChinaZip、Zipghost 7、下载工具类:迅雷Thunder、网际快车FlashGet、比特彗星BitComet、电驴emule、腾讯旋风 8、媒体播放类:暴风影音、Windows Media Player、RealPlayer、QuickTime、千千静听、Winamp 9、网页制作类:FrontPage、Dreamweaver、Web Page Maker、ASP Maker 10、邮件收发类:Outlook Express、Foxmail、DreamMail、Koomail、U-Mail 11、软件防火墙类:瑞星个人防火墙、江民防火墙、360防火墙、天网防火墙、风云防火墙 12、图像处理类:Paint、Photo Editor、PhotoImpact、ACDSee32、Adobe Photoshop 13、矢量绘图软件:Corel Draw、Illustrator、Freehand、Microsoft Visio、Adobe Flash、3D Max 14、数字视频编辑软件:Adobe Premiere、Windows Movie Maker、Video Edit Magic、PowerDirector 15、数字声音编辑软件:附件栏“录音机”、CoolEdit、GoldWave、Adobe Audition、Nero wave Editor 16、网络电视类:PPlive、PPStream、QQLive、UUsee、TVKoo、CCTV Box、迅雷看看 17、FTP工具类:Serv-U FTP、CuteFTP、TurboFTP、ChinaFTP、LeapFTP 18、搜索引擎类:Baidu、Google、北大天网、搜狐Sogou、新浪爱问、网易有道、雅虎易搜

常见的流程图类软件有哪些

产品经理、工程师们常常需要制作流程图来对业务逻辑进行梳理,这个时候选用一款称手的绘制工具就显得尤为重要了,今天我们就来科普一下目前市面上有哪些好用的流程图绘制软件。 当你对那些简洁美观的流程图感到羡慕不已,是否好奇它们是怎样做出来的,是否想知道需要什么样的专业技能。今天,这一切将变得非常简单,你只需要点击几下鼠标就能制作出属于自己的可视化流程图。而且一切操作都异常简洁。

流程图的基本符号 首先,设计流程图的难点在于对业务逻辑的清晰把握。熟悉整个流程的方方面面。这要求设计者自己对任何活动、事件的流程设计,都要事先对该活动、事件本身进行深入分析,研究内在的属性和规律,在此基础上把握流程设计的环节和时序,做出流程的科学设计。研究内在属性与规律,这是流程设计应该考虑的基本因素。也是设计一个好的流程图的前提条件。

然后再根据事物内在属性和规律进行具体分析,将流程的全过程,按每个阶段的作用、功能的不同,分解为若干小环节,每一个环节都可以用一个进程来表示。在流程图中进程使用方框符号来表达。 既然是流程,每个环节就会有先后顺序,按照每个环节应该经历的时间顺序,将各环节依次排开,并用箭头线连接起来。箭头线在流程图中表示各环节、步骤在顺序中的进展。 对某环节,按需要可在方框中或方框外,作简要注释,也可不作注释。 经常判断是非常重要的,用来表示过程中的一项判定或一个分岔点,判定或分岔的说明写在菱形内,常以问题的形式出现。对该问题的回答决定了判定符号之外引出的路线,每条路线标上相应的回答。 选择好的流程图制作工具 亿图发布第一款支持快捷操作的流程图制作工具从而极大的降低了专业流程设计的门槛,让大多数人可以在很短的时间里绘制出专业的流程图。

前服务器常用的操作系统有三类

前服务器常用的操作系统有三类: -Unix -Linux -Windows NT/2000/2003 Server. 这些操作系统都是符合C2级安全级别的操作系 统.但是都存在不少漏洞,如果对这些漏洞不了 解,不采取相应的措施,就会使操作系统完全暴 露给入侵者. BJFU Info Department, QiJd第七章操作系统安全配置方案UNIX系统 UNIX操作系统是由美国贝尔实验室开发的 一种多用户,多任务的通用操作系统. 诞生于1969年,在GE645计算机上实现一 种分时操作系统的雏形 1970年给系统正式取名为Unix操作系统. 到1973年,Unix系统的绝大部分源代码都 用C语言重新编写过,大大提高了Unix系统 的可移植性,也为提高系统软件的开发效率 创造了条件. BJFU Info Department, QiJd第七章操作系统安全配置方案主要特色 UNIX操作系统经过20多年的发展后,已经成为一种成 熟的主流操作系统,并在发展过程中逐步形成了一些 新的特色,其中主要特色包括5个方面. -(1)可靠性高 -(2)极强的伸缩性 -(3)网络功能强 -(4)强大的数据库支持功能 -(5)开放性好 BJFU Info Department, QiJd第七章操作系统安全配置方案Linux系统 Linux是一套可以免费使用和自由传播的 类Unix操作系统,主要用于基于Intel x86 系列CPU的计算机上. Linux是在GPL(General Public License)保护下的自由软件,版本有: Redhatlinux,Suse,Slackware, Debian等;国内有:XteamLinux,红旗 Linux.Linux流行的原因是免费并且功能 强大. BJFU Info Department, QiJd第七章操作系统安全配置方案Linux典型的优点 (1)完全免费 (2)完全兼容POSIX 1.0标准

各种类型软件系统概念

RCM简介 以可靠性为中心的维修(RCM)是目前国际上通用的用以确定设(装)备预防性维修需求、优化维修制度的一种系统工程方法。按国家军用标准GJB1378-92《装备预防性维修大纲的制定要求与方法》,RCM定义为:“按照以最少的资源消耗保持装备固有可靠性和安全性的原则,应用逻辑决断的方法确定装备预防性维修要求的过程或方法”。它的基本思路是:对系统进行功能与故障分析,明确系统内各故障后果;用规范化的逻辑决断程序,确定各故障后果的预防性对策;通过现场故障数据统计、专家评估、定量化建模等手段在保证安全性和完好性的前提下,以最小的维修停机损失和最小的维修资源消耗为目标,优化系统的维修策略 RCM基本观点 装备的固有可靠性与安全性是由设计制造赋予的特性,有效的维修只能保持而不能提高它们。RCM特别注重装备可靠性、安全性的先天性。如[1]果装备的固有可靠性与安全性水平不能满足使用要求,那么只有修改设计和提高制造水平。因此,想通过增加维修频数来提高这一固有水平的做法是不可取的。维修次数越多,不一定会使装备越可靠、越安全。 产品(项目)故障有不同的影响或后果,应采取不同的对策。故障后果的严重性是确定是否做预防性维修工作的出发点。在装备使用中故障是不可避免的,但后果不尽相同,重要的是预防有严重后果的故障。故障后果是由产品的设计特性所决定的,是由设计制造而赋予的固有特性。对于复杂装备,应当对会有安全性(含对环境危害)、任务性和严重经济性后果的重要产品,才做预防性维修工作。对于采用了余度技术的产品,其故障的安全性和任务性影响一般已明显降低,因此可以从经济性方面加以权衡,确定是否需要做预防性维修工作。 产品的故障规律是不同的,应采取不同方式控制维修工作时机。有耗损性故障规律的产品适宜定时拆修或更换,以预防功能故障或引起多重故障;对于无耗损性故障规律的产品,定时拆修或更换常常是有害无益,更适宜于通过检查、监控,视情进行维修。 对产品(项目)采用不同的预防性维修工作类型,其消耗资源、费用、难度与深度是不相同的,可加以排序。对不同产品(项目),应根据需要选择适用而有效的工作类型,从而在保证可靠性与安全性的前提下,节省维修资源与费用。 二、RCM分析的输出是什么?

三 常用系统类库

广州大学学生实验报告 开课学院及实验室:电子实验楼418 2010年9月 30日 学院计算机科学与 教育软件学院 年级、专 业、班 08(5)姓名劳康乘学号0823010180 实验课程名称Java实验成绩 实验项目名称实验三包、接口、异常处理指导 老师 樊志平 一、实验目的 1.了解java的预定义类 2.学习使用java的常用类 3.掌握方法覆盖的使用 4.了解日期类和动态数组 二、实验设备(仪器) Java JCreator,PC 三、实验原理 java程序编写与编译原理 四、实验步骤 1.java常用工具类 在该实验中包含3个练习,分别是针对Math类,基本类型的包装类,Math类中包含有许多常用的数学方法如求绝对值abs()、正弦值sin()、两数当中的较大值max(x,y),而基本类型的包装类则允许将基本的数据类型包装成一个类。 //MathTest.java import java.util.*; public class MathTest { public static void main(String args[]) { Scanner scanner = new Scanner(System.in); int intData; double doubleData; String intString, doubleString; System.out.print("请输入整数x和实数y:"); intData = scanner.nextInt(); // 以字符串方式输入实数 doubleString = scanner.next(); // 创建整数对象intObject Integer intObject = new Integer(intData); // 返回字符串所对应的数值 doubleData = Double.parseDouble(doubleString); intData = intObject.intValue(); // 将整数对象的值以字符串形式输出 intString = intObject.toString(); System.out.println("你的输入是:" + intString + "," + doubleData); // 开始调用Math类的方法进行运算 int intData1 = Math.abs(intData); System.out.println("abs(x)x的绝对值:" + Math.abs(intData)); System.out.println("ceil(y)y向上取整:" + Math.ceil(doubleData)); System.out.println("f100“y)y向下取整:" + Math.floor(doubleData)); System.out.println("exp(x)e的x次幂:" + Math.exp(intData)); System.out.println("log(x)x的自然对数:" + Math.log(intData1)); System.out.println("max(x,y)x和y中的较大者:" + Math.max(intData, doubleData)); System.out.println("min(x,y)x和y中的较小者:" + Math.min(intData, doubleData)); System.out.println("sin(x)x的正弦值:" + Math.sin(intData)); System.out.println("COS(x)x的余弦值:" + Math.cos(intData)); System.out.println("以x为半径的圆面积:" + Math.PI * intData * intData); } } 2.日期类Date和Calendar 在这个练习里用户将会学习如何使用操作时间类Date和Calendar以及控制日期输入输出格式的类DateFormat,程序会要求用户以规范的格式输入自己的生日日期,然后将使用Date类和Calendar类中

java常用工具类及其使用方法

在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码。 一. https://www.doczj.com/doc/926492960.html,mons.io.IOUtils closeQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块toString:转换IO流、Uri、byte[]为String copy:IO流数据复制,从输入流写到输出流中,最大支持2GB toByteArray:从输入流、URI获取byte[] write:把字节. 字符等写入输出流 toInputStream:把字符转换为输入流 readLines:从输入流中读取多行数据,返回List copyLarge:同copy,支持2GB以上数据的复制 lineIterator:从输入流返回一个迭代器,根据参数要求读取的数据量,全部读取,如果数据不够,则失败 二. https://www.doczj.com/doc/926492960.html,mons.io.FileUtils deleteDirectory:删除文件夹 readFileToString:以字符形式读取文件内容 deleteQueitly:删除文件或文件夹且不会抛出异常 copyFile:复制文件 writeStringToFile:把字符写到目标文件,如果文件不存在,则创建 forceMkdir:强制创建文件夹,如果该文件夹父级目录不存在,则创建父级 write:把字符写到指定文件中 listFiles:列举某个目录下的文件(根据过滤器) copyDirectory:复制文件夹 forceDelete:强制删除文件 三. https://www.doczj.com/doc/926492960.html,ng.StringUtils isBlank:字符串是否为空(trim后判断) isEmpty:字符串是否为空(不trim并判断) equals:字符串是否相等 join:合并数组为单一字符串,可传分隔符 split:分割字符串

系统软件及其常用操作系统基础知识测试题

系统软件及其常用操作系统基础知识测试题 一、选择题 1.软件通常被分成和应用软件两大类。 A.高级软件B.系统软件C.计算机软件D.通用软件 2.系统软件中主要包括操作系统、语言处理程序和。 A.用户程序B.实时程序C.实用程序D.编辑程序 3.软件由程序、和文档三部分组成。 A.计算机B.工具C.语言处理程序D.数据 4.操作系统是现代计算机系统不可缺少的组成部分。操作系统负责管理计算机的。 A.程序B.功能C.资源D.进程~ 5.选定要删除的文件,然后按键,即可删除文件。 A.Alt B.Ctrl C.Shift D.Del 6.如用户在一段时间,Windows将启动执行屏幕保护程序。 A.没有按键盘 B.没有移动鼠标器 C.既没有按键盘,也没有移动鼠标器 D.没有使用打印机 7.文件夹中不可存放。 A.文件B.多个文件C.文件夹D.字符 8.在资源管理器中要同时选定不相邻的多个文件,使用键。 { A.Shift t B.Ctrl C.Al D.F8 9.若将一个应用程序添加到文件夹中,以后启动Windows,即会自动启动。 A.控制面板B.启动C.文档D.程序10.在下列关于虚拟内存的说法中,正确的是。 A.如果一个程序的大小超过了计算机所拥有的内存容量,则该程序不能执行 B.在Windows中,虚拟内存的大小是固定不变的 C.虚拟内存是指模拟硬盘空间的那部分内存 D.虚拟内存的最大容量与CPU的寻址能力有关 11.不属于存储管理的功能是。 A.存储器分配B.地址的转换 \ C.硬盘空间管理D.信息的保护 12.在下列关于文件的说法中,错误的是。 A.在文件系统的管理下,用户可以按照文件名访问文件 B.文件的扩展名最多只能有三个字符 C.在Windows中,具有隐藏属性的文件是不可见 D.在Windows中,具有只读属性的文件仍然可以删除 13.经常对硬盘上的数据进行备份,可能的原因是。 A.可以整理硬盘上的数据,提高数据处理速度

网上申报系统常见技术类问题

网上申报系统常见技术类问题 1. 个别纳税人在进行“网上南京国税”用户注册时,所录入的信息内容和征管系统CTAIS 2.0是一致的,但系统仍然提示其提供的信息不正确。什么原因?如何解决?答:上述问题一般是在录入信息时,全角、半角不一致所造成的,请及时联系主管局系统管理员(可通过网上申报服务电话一览表上办税服务厅和服务分中心电话联系到系统管理员),由其在“用户身份管理识别系统”中进行手工添加。 2. 由于“网上南京国税”上纳税人电子作业系统日益增加,部分系统安装打印控件时需要将其网址“https://www.doczj.com/doc/926492960.html,”添加为信任站点,但网上申报手册中强调要将“https://https://www.doczj.com/doc/926492960.html,”添加为信任站点,为什么? 答:将“https://www.doczj.com/doc/926492960.html,”添加为信任站点,是为了保证纳税人能够顺利登录“网上南京国税”;将“https://https://www.doczj.com/doc/926492960.html,”添加为信任站点,是为了保证纳税人在网上申报系统中数据的加密安全。对需要进行网上申报的纳税人而言,上述两个网址都必须添加为信任站点。国税局已在系统帮助和操作手册中加入了对该操作的说明。 3. 安全站点如何设置? 答:可从“网上南京国税”的纳税人下载专区中下载《第二代网上申报系统操作指南(2008版本)》,手册中有详细的说明。 4. 更新CA证书时长时间无响应。什么原因?如何解决?

答:这种情况大多数为纳税人的防火墙软件所致。在防火墙弹出提示后选择“允许”即可。若没有任何提示弹出,则要暂时关闭防火墙,同时注意安装并使用360安全卫士查杀木马和流氓软件。目前我们已在系统帮助和操作手册中加入了对该操作的说明。 5. 纳税人在网上申报CA证书安装时提示“未在Service中找到企业名称”,如何解决? 答:原因是网上申报系统申报资格登记库中无该纳税人信息,目前该问题已解决。另外,纳税人也可联系主管局系统管理员(可通过网上申报服务电话一览表上办税服务厅和服务分中心电话联系到系统管理员),由其在网上申报后台管理系统中进行资格认定审核,解决该问题。 6. 小型代账会计代理了5户以内企业,在进行第二户代理申报时,虽然安装了新的证书,可还是显示前一户的证书,什么原因?如何解决? 答:这种情况可能有两种原因:(1)本机安装了多个申报证书,在进行证书选择时,操作人员选择错误;(2)在完成第一户申报后,没有关闭所有的浏览器,使得浏览器的缓存还存有第一户的证书信息。 在为几户企业进行代理申报时,完成第一户纳税人的申报后,需要进行如下操作才能避免这个问题:关闭所有的浏览器,使用下一户纳税人的识别号和密码登录“网上南京国税”,重新安装CA证书。 7. 申报表后的状态“X”和“√”,分别表示什么意思? 答:网上申报系统会自动读取纳税人在申报系统中的状态,“X”表示本期未申报,“√”

相关主题
文本预览
相关文档 最新文档