📄 00000018.htm
字号:
Any ACU <BR>ACU <BR>ACU <BR>modem <BR>laser 19200 <BR>9600 <BR>2400 <BR>19200 <BR>19200 5551234 <BR>5552345 <BR>5556789 <BR> - <BR> - (not used) <BR>(not used) <BR>(not used) <BR>(not used) <BR>(not used) <BR>图18.2 Systems 文件 <BR> name 域是远程系统的名字。例如,我们可以使用cu host1这种形式的命令。 <BR>这里要注意的是,我们可以对同一远程系统建立多个项。系统按顺序尝试拨号这些 <BR>项。在18.2中名为modem和laser的项对应于与调制解调器和激光打印机的直接连接 <BR>。我们并不需要拨号来连接这些设备,但我们对它们仍需要打开合适的终端连线, <BR>并处理好加锁问题。 <BR> Time域指定了拨号的星期和时间。这是一个UUCP的域。Type域指定了对这个特 <BR>定的name使用Devices文件中的哪一项。Class域是指线路速率(波特率)。Phone <BR>域指定那些type为ACU项的电话号码,而其他项的phone域是一个连字符。最后一个 <BR>域login,是一个字符串。它是在UUCP中远程登录时所使用的,我们不使用这个域 <BR>。 <BR>type line line2 class dialer <BR>ACU <BR>ACU <BR>ACU <BR>ACU <BR>modem <BR>laser cua0 <BR>cua0 <BR>cua0 <BR>cua0 <BR>ttya <BR>ttyb - <BR>- <BR>- <BR>- <BR>- <BR>- 19200 <BR>9600 <BR>2400 <BR>1200 <BR>19200 <BR>19200 tbfast <BR>tb9600 <BR>tb2400 <BR>tb1200 <BR>direct <BR>direct <BR>图18.3 Devices 文件 <BR> Devices文件包含了调制解调器和那些直接连接的主机的信息。图18.3列出了 <BR>这个文件中的五个域。Type 域与Systems文件中type域对应。Class域也一定要与 <BR>systems文件中对应的class域一致,它通常指定了线路速率。 <BR> 设备的实际名称是对line字段加前缀/dev/。在这个例子中,实际设备是/dev <BR>/cua0,/dev/ttya和/dev/ttyb。另外一个域line2,没有被使用。 <BR> 最后一个域dialer,与Dialers文件中对应项一致。对于直接相连的项则为di <BR>rect。 <BR>图18.4显示了Dialers文件的格式。这个文件包含了所有调制解调器的拨号命令。 <BR> <BR>dialer sub handshake <BR>tb9600 =w- "" \dA\pA\pA\pTQ0S2=255S12=255s50=6s58=2s68=255\r\c <BR>OK\r \EATDT\T\r\c CONNECT\s9600 \r\c "" <BR>tbfast =w- "" \dA\pA\pA\pTQ0S2=255S12=255s50=255s58=2s68=255s110=1s111= <BR>30\r\c <BR>OK\r \EATDT\T\r\c CONNECT\sFAST <BR>图18.4 Dialers文件 <BR> 这里只有两项,我们没有列出Devices中的tb1200和tb2400项。 <BR> Handshake域本应该写在同一行,因为版面的限制,我们把它放在两行上。 <BR> Dialer域是与Devices文件中的行相对应。Sub域则指定了在电话号码中等于号 <BR>和减号的替代字符。在图18.4中,这个域表明了用w代替等于号,逗号代替减号。 <BR>这样就允许Systems文件中的电话号码中含有等于号(意思是等待拨号音)和减号 <BR>(意思是暂停)。在不同的调制解调器上,这两个字符的含义不同,将它们代换成 <BR>何种字符,需在Dialers文件中指定。 <BR> 最后一个域handshake,包含了实际的拨号指令。它是一连串以空格分开的字 <BR>符串,称为期望-发送串。我们期望(一直读取,直到得到匹配字符串)得到第一 <BR>个字符串,然后发送(写入)第二个字符串。作为一个例子,让我们来查看tbfas <BR>t项。这个项是用于PEP(packetized ensemble protocol) 模式的Telebit Trailb <BR>lazer 调制解调器。 <BR> 1.第一个期望字符串是空,意思是"期望空"。这总是成功的。 <BR>2.发送第二个字符串,这个字符串以\d开头,\d表示暂停两秒。然后发送A。再暂 <BR>停半秒(\p),发送另外一个A,暂停,再发送一个A,再暂停。接着,我们发送余 <BR>下的以T开头的字符串。这些都是设置调制解调器的命令。\r发送一个回车,\c表 <BR>明在发送字符串结尾不要开始新行。 <BR>3.从调制解调器读取,直到得到字符串OK\r。 <BR>4.下一个发送串以\E开头,这允许进行回应检查:每次我们发送给调制解调器一 <BR>个字符,我们就一直读取直到有回应。然后我们发送第四个字符ATDT。下一个特殊 <BR>字符\T,是指使用替代的电话号码。然后是一个回车符,然后是\c是指在发送字符 <BR>串后不要开始新行。 <BR> 5.最后的期望字符串是等待调制解调器返回CONNECT FAST。(\s意思是单个 <BR>空格) <BR> 当收到最后的期望字符串后,拨号就完成了。(当然,在这handshake字符串 <BR>中可能出现其它更多的特殊字符序列,我们就不详细说明了。) <BR>现在来总结一下,我们对这三个文件的操作。 <BR>1. 使用远程系统的名称,在Systems文件中找到相同name的第一项。 <BR>2. 在Devices文件中找到对应的项,其type域和class域与Systems文件中项的相 <BR>应域匹配。 <BR>3. 在Dilaler文件中找到与Devices文件dialer域对应的项。 <BR>4. 拨号。 <BR> 这个过程如果失败,有两个原因:(1)对应于devices文件中line域的设备已 <BR>经被其他人所使用。(2)拨号不成功。(例如,远程系统电话占线,或者远程系 <BR>统关机不响应电话等)。第二种情况我们一般可以通过对调制解调器读写超时来确 <BR>定。(可参考练习18.10)。不管出现哪一种情况,我们都要回到拨号的第一步, <BR>然后选择Systems文件中同一远程系统的下一项。如同我们在图18.2中看到的,一 <BR>个特定的主机可以有多个项,每个主机可以有多个电话号码(同一个电话号码也可 <BR>以对应多个设备)。 <BR> 在Honey DanBer 系统中还有其他我们没有用到的文件。如Dialcodes指定了S <BR>ystems文件中电话号码的缩写,而Sysfiles文件允许指定Systems、Devices、Dia <BR>lers文件的替代文件。 <BR>18.5 服务器端程序设计 <BR> 现在我们开始描述一下服务器端的软件。有两个因素影响服务器端软件的设计 <BR>。 <BR>1. 拨号过程可能会延续一段时间(15-30秒),所以服务器端软件一定要创建一 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -