以我的行文方式翻译,非机器翻译。为更好理解,我加入了一些词,而且语气比较委婉。
We
paid
the
sea
frieght
on
Jan.
by
borrowing
money
as
our
financial
condition
is
very
tight
at
that
moment,
so
that
you
could
collect
the
goods
in
time.
The
forwarding
agent
advised
me
that
they
failed
to
deliver
the
goods
because
you
hadn't
pay
the
tax.
We
wonder
whether
it's
true.
If
yes,
we
suggest
you
collect
the
goods
by
paying
without
delay
to
avoid
any
loss.
Meanwhile,
as
you
know,
our
CNY
is
around
the
corner.
It's
time
to
pay
my
workers,
who
are
leaving
for
CNY
holiday.
On
the
other
hand,
my
raw
material
suppliers
have
been
pushing
us
for
closing
the
due
payments.
We
are
under
big
finacial
pressure.
We
would
appreciate
very
much
you
effect
the
payment
asap
upon
receipt
of
goods,
to
fulfill
your
promise.
We
attached
the
invoice
and
our
banking
info
for
your
further
action.
供你参考。你可根据与此客人的关系酌情调整词句。再把发票和你们的银行资料等附上,免得客人再找理由拖拉。
这意思是你在写一个class(类)的时候,"public"这个关键词后面必须得加上 class,表示这个类的访问权限是public的,,你的这属于语法错误,最容易改正,上面那句话的翻译是:在写“public”时语法错误,后面应该跟class。
拓展:
1、Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
2、Java是由Sun Microsystems公司推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态Web、Internet计算。
3、从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。另一方面,Java技术也不断更新。Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。2010年Oracle公司收购Sun Microsystems。
比特币(Bitcoin:比特金)最早是一种网络虚拟货币,可以购买现实生活当中的物品。它的特点是分散化、匿名、只能在数字世界使用,不属于任何国家和金融机构,并且不受地域的限制,可以在世界上的任何地方兑换它,也因此被部分不法分子当做洗钱工具。2013年,美国政府承认比特币的合法地位,使得比特币价格大涨。而在中国,2013年11月19日,一个比特币就相当于6,989元人民币。
2014年1月7日,淘宝发布公告,宣布1月14日起禁售比特币、莱特币等互联网虚拟币等商品。西维吉尼亚州民主党参议员乔·曼钦(Joe Manchin)2014年2月26日向美国联邦政府多个监管部门发出公开信,希望有关机构能够就比特币鼓励非法活动和扰乱金融秩序的现状予以重视,并要求能尽快采取行动,以全面封杀该电子货币。2017年1月11日),中国人民银行上海总部、上海市金融办等对比特币中国开展现场检查,重点检查该企业是否未经许可或无牌照开展信贷、支付、汇兑等相关业务;反洗钱制度落实情况;资金安全隐患等。2017年1月12日,央行营业管理部也在北京进驻“火币网”、“币行”等交易平台。
2017年5月12日,全球突发比特币病毒疯狂袭击公共和商业系统事件!全球有接近74个国家受到严重攻击!
2017年8月1日起全球比特币交易平台将暂停充值、提现服务。比特币中国数字资产交易平台9月14日起停止新用户注册,9月30日数字资产交易平台将停止所有交易业务。
2008年爆发全球金融危机,当时有人用“中本聪”的化名发表了一篇论文,描述了比特币的模式。
和法定货币相比,比特币没有一个集中的发行方,而是由网络节点的计算生成,谁都有可能参与制造比特币,而且可以全世界流通,可以在任意一台接入互联网的电脑上买卖,不管身处何方,任何人都可以挖掘、购买、出售或收取比特币,并且在交易过程中外人无法辨认用户身份信息。2009年,不受央行和任何金融机构控制的比特币诞生。比特币是一种“电子货币”,由计算机生成的一串串复杂代码组成,新比特币通过预设的程序制造,随着比特币总量的增加,新币制造的速度减慢,直到2014年达到2100万个的总量上限,被挖出的比特币总量已经超过1200万个。
每当比特币进入主流媒体的视野时,主流媒体总会请一些主流经济学家分析一下比特币。早先,这些分析总是集中在比特币是不是骗局。而现如今的分析总是集中在比特币能否成为未来的主流货币。而这其中争论的焦点又往往集中在比特币的通缩特性上。
不少比特币玩家是被比特币的不能随意增发所吸引的。和比特币玩家的态度截然相反,经济学家们对比特币2100万固定总量的态度两极分化。
凯恩斯学派的经济学家们认为政府应该积极调控货币总量,用货币政策的松紧来为经济适时的加油或者刹车。因此,他们认为比特币固定总量货币牺牲了可调控性,而且更糟糕的是将不可避免地导致通货紧缩,进而伤害整体经济。奥地利学派经济学家们的观点却截然相反,他们认为政府对货币的干预越少越好,货币总量的固定导致的通缩并没什么大不了的,甚至是社会进步的标志。
比特币网络通过“挖矿”来生成新的比特币。所谓“挖矿”实质上是用计算机解决一项复杂的数学问题,来保证比特币网络分布式记账系统的一致性。比特币网络会自动调整数学问题的难度,让整个网络约每10分钟得到一个合格答案。随后比特币网络会新生成一定量的比特币作为赏金,奖励获得答案的人。
2009年比特币诞生的时候,每笔赏金是50个比特币。诞生10分钟后,第一批50个比特币生成了,而此时的货币总量就是50。随后比特币就以约每10分钟50个的速度增长。当总量达到1050万时(2100万的50%),赏金减半为25个。当总量达到1575万(新产出525万,即1050的50%)时,赏金再减半为12.5个。
首先,根据其设计原理,比特币的总量会持续增长,直至100多年后达到2100万的那一天。但比特币货币总量后期增长的速度会非常缓慢。事实上,87.5%的比特币都将在头12年内被“挖”出来。所以从货币总量上看,比特币并不会达到固定量,其货币总量实质上是会不断膨胀的,尽管速度越来越慢。因此看起来比特币似乎是通胀货币才对。
然而判断处于通货紧缩还是膨胀,并不依据货币总量是减少还是增多,而是看整体物价水平是下跌还是上涨。整体物价上升即为通货膨胀,反之则为通货紧缩。长期看来,比特币的发行机制决定了它的货币总量增长速度将远低于社会财富的增长速度。
凯恩斯学派的经济学家们认为,物价持续下跌会让人们倾向于推迟消费,因为同样一块钱明天就能买到更多的东西。消费意愿的降低又进一步导致了需求萎缩、商品滞销,使物价变得更低,步入“通缩螺旋”的恶性循环。同样,通缩货币哪怕不存入银行本身也能升值(购买力越来越强),人们的投资意愿也会升高,社会生产也会陷入低迷。因此比特币是一种具备通缩倾向的货币。比特币经济体中,以比特币定价的商品价格将会持续下跌。
比特币是一种网络虚拟货币,数量有限,但是可以用来套现:可以兑换成大多数国家的货币。你可以使用比特币购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可以使用比特币购买现实生活当中的物品。
最近看到一些朋友在编写网络程序是遇到一些问题,故把以前做IPMSG时翻译的文档贴过来,希望对网络编程新手有所帮助,在寻找编程项目的同学们也可参照此文档写出自己的IPMSG。
本文只包含其中几个比较重要的命令以及运行机制的中文翻译,更详细的内容请参照文后的IPMSG 协议英文文档 。
声明:下述协议内容略去了一些在编写程序过程中没有用到协议内容,最初的Ipmsg协议是用日文写的,下面协议内容由本人(cugb_cat)翻译自Mr.Kanazawa的英文文档。本翻译文档可任意传播和使用。
IP信使传输协议(第9版草案) 1996/02/21 。
2003/01/14 修订 。
H.Shirouzu 。
[email]shirouzu@h.email.ne.jp[/email] 。
关于IP信使:
IP信使使用TCP/UDP协议提供收发消息及文件(目录)。
特性:
IP信使能够安装在任何一个安装了TCP/IP协议栈的操作系统上,使用在线用户的动态识别机制,可以和在线所有用户进行信息交换。
运行机制介绍:
使用TCP/UDP端口(默认端口为2425),消息的收发使用UDP协议,文件(文件夹)的收发使用TCP协议。
1、 命令字:
1) 基本命令字(32位命令字的低8位) 。
IPMSG_NOOPERATION 不进行任何操作 。
IPMSG_BR_ENTRY 用户上线 。
IPMSG_BR_EXIT 用户退出 。
IPMSG_ANSENTRY 通报在线 。
IPMSG_SENDMSG 发送消息 。
IPMSG_RECVMSG 通报收到消息 。
IPMSG_GETFILEDATA 请求通过TCP传输文件 。
IPMSG_RELEASEFILES 停止接收文件 。
IPMSG_GETDIRFILES 请求传输文件夹 。
2) 选项位(32位命令字的高24位) 。
IPMSG_SENDCHECKOPT 传送检查(需要对方返回确认信息) 。
IPMSG_FILEATTACHOPT 传送文件选项 。
3) 附件类型命令(文件类型命令字的低8位) 。
IPMSG_FILE_REGULAR 普通文件 。
IPMSG_FILE_DIR 目录文件 。
IPMSG_FILE_RETPARENT 返回上一级目录 。
2、 数据包格式(使用字符串):
1) 数据包格式(版本1的格式) 。
版本号(1):包编号:发送者姓名:发送者主机名:命令字:附加信息 。
2) 举例如下
“1:100:shirouzu:Jupiter:32:Hello”
3、 数据包处理总述:
1) 用户识别
当IPMSG 启动时,命令IPMSG_BR_ENTRY被广播到网络中,向所有在线的用户提示一个新用户的到达(即表示“我来了”);所有在线用户将把该新上线用户添加到自己的用户列表中,并向该新上线用户发送IPMSG_ANSENTRY命令(即表示“我在线”);该新上线用户接收到IPMSG_ANSENTRY命令后即将在线用户添加到自己的用户列表中。
2) 收发消息
使用IPMSG_SENDMSG命令发送消息,消息内容添加在附加信息中;在接收消息时,如果对方要求回信确认(IPMSG_SENDCHECKOPT位打开),则需发送IPMSG_RECVMSG命令并将对方发送的数据包的编号放在附加信息中一同发送至发送消息方 。
3) 附加文件的扩充(添加于第9版) 。
带有IPMSG_FILEATTACHOPT位的IPMSG_SENDMSG命令可用来传输文件,文件属性及内容添加在附加信息中,文件内容添加在消息内容后并以’\0’与之分隔开。传输文件时以下信息将被添加到消息内容之后(包括格式):文件序号:文件名:大小(单位:字节):最后修改时间:文件属性[: 附加属性=val1[,val2…][:附加信息=…]]:\a:文件序号…
(文件大小、最后修改时间和文件属性为十六进制数,如果文件名中包含’:’则使用“::”代替)。
接收端开始接收文件时,请求传输文件命令IPMSG_GETFILEDATA将发送到发送端的TCP端口(和UDP的发送端口相同),并将发送端发送的包编号:文件序号:偏移量(全为十六进制格式)写到附加信息区一同发送,文件发送端接收到该请求信息并进行校验正确后即开始发送文件(不使用任何格式,亦不进行加密)。
当接收端接收到目录文件时,将发送附加信息区为发送端发送的包编号:文件序号:偏移量(全为十六进制格式)的 IPMSG_GETDIRFILES命令,以用来请求传输目录文件;发送端则将头信息长度:文件名:文件大小:文件属性:文件内容添加到附加信息区(除了文件名和文件内容外,其余皆为十六进制),头信息长度是从头信息长度开始到文件内容前的‘:’分割符为止的字符个数。
当文件属性为IPMSG_FILE_DIR时,IPMsg能够自动识别其为目录,下一个文件的数据在该目录之后。
当文件属性为IPMSG_FILE_RETPARENT时,IPMsg识别其动作为返回上一级目录,在这种情况下,文件名为‘.’其属性为当前目录的值。
附IPMSG协议英文版:
引用:
Original ipmsg protocol specification is written in Japanese. 。
This document was translated by Mr.Kanazawa. 。
This document is not verified yet. 。
---------------------------------------------------------------------- 。
IP Messenger communication protocol (Draft-9) 1996/02/21 。
Modified 2003/01/14 。
H.Shirouzu 。
[email]shirouzu@h.email.ne.jp[/email] 。
---------------------------------------------------------------------- 。
About IP Messenger 。
This is a Send/Receive message service using the TCP/UDP Port. 。
Characteristics 。
IP Messenger can be installed in any OS if TCP/IP is used on your machine. 。
Dynamic member recognition can be done within your network or specified network. 。
You can exchange messages between all IPMsg members. 。
Function description 。
Use TCP/UDP port(default:2425). See the following descriptions 。
(Message Send/Receive: UDP, File Send/Receive: TCP) 。
1. Command
1) Command functions (Low 8 bits from command number 32 bits) 。
IPMSG_NOOPERATION No Operation 。
IPMSG_BR_ENTRY Entry to service (Start-up with a Broadcast command) 。
IPMSG_BR_EXIT Exit from service (End with a Broadcast command) 。
IPMSG_ANSENTRY Notify a new entry 。
IPMSG_BR_ABSENCE Change absence mode 。
IPMSG_BR_ISGETLIST Search valid sending host members 。
IPMSG_OKGETLIST Host list sending notice 。
IPMSG_GETLIST Host list sending request 。
IPMSG_ANSLIST Host list sending 。
IPMSG_SENDMSG Message transmission 。
IPMSG_RECVMSG Message receiving check 。
IPMSG_READMSG Message open notice 。
IPMSG_DELMSG Message discarded notice 。
IPMSG_ANSREADMSG Message open confirmation notice(added from version-8 ) 。
IPMSG_GETFILEDATA File Transfer request by TCP 。
IPMSG_RELEASEFILES Discard attachment file 。
IPMSG_GETDIRFILES Attachment hierarchical file request 。
IPMSG_GETINFO Get IPMSG version info. 。
IPMSG_SENDINFO Send IPMSG version info. 。
IPMSG_GETABSENCEINFO Get absence sentence 。
IPMSG_SENDABSENCEINFO Send absence sentence 。
IPMSG_GETPUBKEY RSA Public Key Acquisition 。
IPMSG_ANSPUBKEY RSA Public Key Response 。
2) Option flag (High 24 bits from command number 32 bits) 。
IPMSG_ABSENCEOPT Absence mode(Member recognition command) 。
IPMSG_SERVEROPT Server(Reserved) 。
IPMSG_DIALUPOPT Send individual member recognition command 。
IPMSG_SENDCHECKOPT Transmission check 。
IPMSG_SECRETOPT Sealed message 。
IPMSG_READCHECKOPT Sealed message check(added from ver8 ) 。
IPMSG_PASSWORDOPT Lock 。
IPMSG_BROADCASTOPT Broadcast message 。
IPMSG_MULTICASTOPT Multi-cast(Multiple casts selection) 。
IPMSG_NEWMUTIOPT New version multi-cast(reserved) 。
IPMSG_AUTORETOPT Automatic response(Ping-pong protection) 。
IPMSG_NOLOGOPT No log files 。
IPMSG_NOADDLISTOPT Notice to the members outside of BR_ENTRY 。
IPMSG_FILEATTACHOPT File attachment 。
IPMSG_ENCRYPTOPT Code 。
IPMSG_NOPOPUPOPT (No longer valid) 。
IPMSG_RETRYOPT Re-send flag(Use when acquiring HOSTLIST) 。
3) Extended code flag (hex format combination) 。
IPMSG_RSA_512 。
IPMSG_RSA_1024 。
IPMSG_RSA_2048 。
IPMSG_RC2_40 。
IPMSG_RC2_128 。
IPMSG_RC2_256 。
IPMSG_BLOWFISH_128 。
IPMSG_BLOWFISH_256 。
IPMSG_SIGN_MD5 。
4) Extended files for attachment (fileattr low 8 bits) 。
IPMSG_FILE_REGULAR 。
IPMSG_FILE_DIR 。
IPMSG_FILE_RETPARENT 。
IPMSG_FILE_SYMLINK 。
IPMSG_FILE_CDEV 。
IPMSG_FILE_BDEV 。
IPMSG_FILE_FIFO 。
IPMSG_FILE_RESFORK 。
5) Attachment file extended attribute(fileattr high 24 bits) 。
IPMSG_FILE_RONLYOPT 。
IPMSG_FILE_HIDDENOPT 。
IPMSG_FILE_EXHIDDENOPT 。
IPMSG_FILE_ARCHIVEOPT 。
IPMSG_FILE_SYSTEMOPT 。
6) Extended file attribute for attachment file 。
IPMSG_FILE_UID 。
IPMSG_FILE_USERNAME 。
IPMSG_FILE_GID 。
IPMSG_FILE_GROUPNAME 。
IPMSG_FILE_PERM 。
IPMSG_FILE_MAJORNO 。
IPMSG_FILE_MINORNO 。
IPMSG_FILE_CTIME 。
IPMSG_FILE_MTIME 。
IPMSG_FILE_ATIME 。
IPMSG_FILE_CREATETIME 。
IPMSG_FILE_CREATOR 。
IPMSG_FILE_FILETYPE 。
IPMSG_FILE_FINDERINFO 。
IPMSG_FILE_ACL 。
IPMSG_FILE_ALIASFNAME 。
IPMSG_FILE_UNICODEFNAME 。
2.Command format(Use all character strings) 。
1) Command(Format version-1) 。
Ver(1) : PacketNo : SenderName : SenderHost : CommandNo : AdditionalSection 。
2) An example for Message Send/Receive by using the current command format 。
"1:100:shirouzu:jupiter:32:Hello" 。
3.Command process overview 。
1) Member recognition 。
An IPMSG_BR_ENTRY command notifies a new entry to the current 。
members at start-up. 。
All members add the new member to their list after getting a notification message. 。
An IPMSG_ANSENTRY command sends a message back to the new member. 。
The new member gets the current member data by a 。
IPMSG_ANSENTRY command. All members can communicate as long as an 。
IP packet exists. 。
An IPMSG_BR_ABSENCE command broadcasts absence mode cancel or 。
nickname change to all members. However, an IPMSG_ANSENTRY command 。
does not send a message back, which is different from an IPMSG_BR_ENTRY 。
command.
IPMSG_BR_ENTRY, IPMSG_ANSENTRY, and IPMSG_BR_ABSENCE commands 。
use an IPMSG_ABSENCEOPT flag for absence mode. Input a nickname to 。
additional command. 。
Add an IPMSG_DIALUPOPT flag for dial-up users who can't be reached by 。
a broadcast command. A member recognition command needs to be 。
sent individually to the members with this optional flag. 。
(Extended group)IPMSG_BR_ENTRY and IPMSG_BR_ABSENCE commands 。
sends a group name by adding the new group name after the current 。
command format character strings (Input '\0' between the current 。
command and extended name). 。
2) Send/Receive Message 。
Send Message uses an IPMSG_SENDMSG command that can input a message 。
in the extended area. 。
Receive Message sends back an IPMSG_RECVMSG command only 。
if an IPMSG_SENDCHECKOPT flag is ON. Input the original packet number 。
to the extended area. 。
Broadcast Message Send uses an IPMSG_BOADCASTOPT command 。
and an IPMSG_SENDMSG flag should be ON. 。
Auto-Send packet(absence notice) needs to be added to IPMSG_AUTORETOPT 。
for ping-pong protection. If either one or another packet is ON, then 。
confirmation/auto-send packet is not sent back. 。
Send Message Sealing needs to be an IPMSG_SECRETOPT packet ON. 。
In this case, Receive Message sends an IPMSG_READMSG command. 。
Input the original packet number to the extended area. 。
(Additional IPMSG_NOADDLISTOPT) 。
When receiving an IPMSG_SENDMSG packet from a host that is 。
not on your Send/Receive list, IPMsg will either confirm a host by 。
sending an IPMSG_BR_ENTRY command or add a host name to 。
the Send/Receive list. 。
However, single-shot Message Send/Receive action needs to be avoided. 。
Add an IPMSG_NOADDLISTOPT flag to an IPMSG_SENDMSG command. 。
(Additional IPMSG_READCHECKOPT from version-8 ) 。
When an IPMSG_READMSG command contains an IPMSG_READCHECKOPT flag, 。
IPMsg process is the same as IPMSG_SENDMSG with an 。
IPMSG_SENDCHECKOPT flag. 。
However, Send Message uses an IPMSG_ANSREADMSG command, 。
not IPMSG_RECVMSG. 。
3) Message Send/Receive 亅encrypted extension (Added in the version-9 ) 。
Use the combination of Public-key(RSA) and common key(RC2/Blowfish). 。
(Encrypted extension area is used in hex format.) 。
(Public key acquisition)Send an IPMSG_GETPUBKEY command to Receive 。
Message. Receive Message gets an IPMSG_ANSPUBKEY that 。
means receiving RSA public key from Send Message. 。
IPMSG_GETPUBKEY/IPMSG_ANSPUBKEY both require the value which is 。
encryption capability (Exp. IPMSG_RSA_1024) flag uses "OR" at first 。
part of extension 。
In addition, In IPMSG_ANSPUBKEY, public key written as EE-NNNNNN 。
E=Exponent丄N=method)devide by ':'. and Input the Fdelimiter '-' 。
between E and N. 。
This sequence can be skipped after the 2nd Send/Receive process by 。
memorizing public key and encrypted data. 。
(Encrypted message)After a sender creates a common key that is 。
supported both sender and receiver, a common key can encrypt a message. 。
In addition, a receiver's public key encrypts the common key. 。
(Encrypted message transmission) IPMSG_ENCRYPTOPT is used in 。
IPMSG_SENDMSG. At the first part of extension, input the value which 。
is 'or' resoult from Convination of public key and common key type . 。
Then use common key which encrypt with public key devide by ':'. 。
Then input message which is eccrypted by public key devide by ':'. 。
If both supports IPMSG_SIGN_XXX, then add ':' and signeture. 。
Also, In the method of encode padding, PKCS#1ECB key is used for RSA, 。
PKCS#5 CBC common key is used for RC2/blowfish. 。
Also, The Packet related to Entry manifestation the capability of 。
ecryption support using IPMSG_ENCRYPTOPT 。
4) Extension with file attachment(Available from version-9 ) 。
An IPMSG_SENDMSG command with an IPMSG_FILEATTACHOPT flag for 。
File transfer (download permission)notification sends a message 。
with attachment. 。
Input '\0' after the message and attachment file data. 。
fileID:filename:size:mtime:fileattr[:extend-attr=val1 。
[,val2...][:extend-attr2=...]]:\a:fileID... 。
(size, mtime, and fileattr describe hex format. 。
If a filename contains ':', please replace with "::".) 。
When Receive Message downloads an attachment file, an IPMSG_GETFILEDATA 。
command requests a data transmission packet to the TCP port that is the same number 。
as the UDP sending port number. Input packetID:fileID: offset to the extended area. 。
(Use all hex format.) 。
File Transfer side receives the request. After recognizing that it's a correct request, 。
then send the specified data (no format) 。
When the data receiving side downloads a hierarchical attachment file, 。
use an IPMSG_GETDIRFILES command and input a packetID:fileID 。
to the extended area and send a data transmission request packet. 。
(all hex format) 。
Data sending side sends the following hierarchical data format. 。
header-size:filename:file-size:fileattr[:extend-attr=val1 。
[,val2...][:extend-attr2=...]]:contents-data 。
Next headersize: Next filename... 。
(All hex format except for filename and contetns-data) 。
header-size is from the beginning of header-size to the delimiter ':' 。
that is before contents-data. extend-attr can be omitted and used multiple 。
extended attributes. Use '=' for data input. 。
When fileattr is IPMSG_FILE_DIR, IPMsg recognizes that it is automatically 。
in the directory, the next file data is after the directory. 。
When fileattr is IPMSG_FILE_RETPARENT, IMPsg recognizes that it returns 。
to the parent directory. In this case, File name is always "." and the attribute 。
value is the current directory data. 。
Sending process starts from the attachment directly and returns the 。
IPMSG_FILE_RETPARENT command to the attachment directory. 。
Add an IPMSG_FILEATTACHOPT flag for an Entry packet to support the 。
attachment file. 。
5) Other commands 。
When acquiring different versions, send an IPMSG_GETINFO command. 。
Receiving side sends the version information character string to 。
extended area. 。
Send an IPMSG_GETABSENCEINFO command for acquiring an absence message. 。
Receiving side sends an IPMSG_SENDABSENCEINFO back if the status is absence mode. 。
If the status is not absence mode, a character string "Not absence mode" will be sent back. 。
6) Confirmation/Retry 。
If a confirmation packet for IPMSG_SENDMSG or IPMSG_RECVMSG is not delivered 。
within a specified time, then it will be sent again. 。
A number of retry actions or interval period is depended on the current condition. 。
4. Other
1) Linefeed
Linefeed characters in Send Message is standardized with UNIX type ('0x0a'). 。
Please change if needed. 。
2) Delimiter ':' 。
':' is used as a delimiter. You can't use this delimiter for user name 。
and host name. 。
If the use/host names contain a ':', please replace with another sign, 。
for an example ';'. 。
Although using this delimiter isn't problem as yet, I may create an 。
escape sequence. 。
3) Kanji codes 。
SJIS
5. Contact e-mail address 。
E-Mail [email]shirouzu@h.email.ne.jp[/email] 。
Note
See ipmsg.h for command codes. 。
Please e-mail me your comments and suggestions.。
母亲今年八十九岁了,和武汉市的那些上了年纪的爹爹、婆婆们一样,早晨都要到街上转一转。过完了早,习惯地拿上拐杖沿着每天既定的路线慢慢地走到江汉路步行街,熟悉的老人们见了面总要调侃一番,“啊哟,余太婆,您家怎么还没去见你老伴啊。”“哦,您家也没去扁担山报到啊。”扁担山是武汉市有名的公墓,母亲也戏谑地回报一句。“呵呵呵……”“哈哈哈……”周围的老人们一阵欢笑,生死对于他们来说已不是什么可怕的事情了。
母亲是退休的小学教师,她在这教了二十多年书,这有她好多的学生,付食品店的女售货员、街头拐角处那个修表的……当然还有好多后来上了大学的。母亲上街的时候总有人给她打招呼,除了她的学生叫她余老师外,其他的人都叫她余太婆,叫老师也好,叫太婆也好都表示了对母亲的一种尊敬。我在新疆工作,回家的机会不多,每四年才有一次探亲假,陪母亲上街时,遇到有人不停地向她问好,她都满面春风地回应人家,母亲生活在和谐的社会氛围中,是很愉快的,在我的面前甚至还有几分的自豪。
母亲是江苏常州人,出生在大户人家,母亲的父亲余少舫早年曾当过宋子文的秘书,曾任常州知府、杭州府烟酒局局长等职。母亲的伯父余大鸿曾是清军协统,1912年北京政府授予陆军少将衔。其子余纪忠先后在国民党军队中任要职,后成为台湾报业巨子。母亲的兄弟姐妹很多,都受过良好的教育,母亲曾就读于上海大同大学英专系,此间认识了同学褚璆后结为伉俪,后因时局动荡,父亲去世,家道中落,携小妹随丈夫辗转于当时的大后方川、滇、黔一带,饱尝了颠沛流离之苦。直到抗日战争胜利才回到上海,这时母亲已有三个孩子了,寄居在我们父亲的哥哥家中。父亲的哥哥也就是我们的大伯是一个忠厚纯朴的工人,很小的时候就在上海沪东造船厂当学徒,解放前夕参加了中共地下党,后来是这个厂的劳资科长。
原以为抗战胜利了,能过上安生的日子,谁知时局还是那样动荡,为了生计母亲和我们几个孩子跟随父亲,四处漂泊,先后到过杭州、南京、株州,长沙、醴陵、衡阳好多地方,一九五二年到武昌后,才算安定下来。受孩子的拖累母亲没有办法到社会上去工作,那时,我和哥哥都在武昌铁路第一职工子弟学校上学,四弟和五弟也大了一点,母亲总想找机会出去工作,正好铁路局办的职工业余文化补习学校缺老师,虽然不是正式的,待遇也很微薄,母亲还是欣然接受了这个工作,来往于武昌和汉口之间。来学习的都是成年人,他们的文化底子都很薄,程度又参差不齐,母亲的脾气特别好,为人又忠厚善良,对每一个学员都认真负责,时间一长,学员们都很喜欢她,有些跑车的列车员出差回来时还想着老师,总给母亲带点外地的土特产。
母亲终日操劳家务,学业几乎荒废。记得到武昌后不久,武汉市教育局面对社会招聘教师,考试中母亲还闹了个笑话,有一道题是翻译《吕氏春秋·察今》中“刻舟求剑”一段文言文,母亲竟然译成找到了楚人掉到水里的那把剑。考试回来,母亲问我,到底能不能找到剑,连我这个上四年级的小学生都知道这个故事,母亲懊悔不已,开始了新的学习过程。母亲的小妹妹是读师范的,和母亲一起参加考试,成了武汉市球场路小学的正式教师。
生活上的许多事母亲也在不断地学习,那时候都烧煤球,生炉子就是一件不容易的事,弄不好烟子薰得你直流眼泪,炉子还是生不着,慢慢地母亲找到了窍门,柴禾要架空,堆上煤球后要慢慢地捂着,快了柴禾烧完了,煤还着不了,心急是没有用的。用体温表测体温,母亲不知道怎么看,先放在刚从热水瓶倒出来的开水上试一试,热气一薰体温表涨破了,水银流到地下到处乱滚。母亲是南方人,很少吃面食,更不要说做馒头了,酵头也放了,可蒸出来的馒头又硬又酸,母亲竟然不知道发好的面里要加碱或是小苏打,看着那冷了以后还发红的馒头,母亲自嘲说这是“洋”馒头。装卸供应社工会主席的爱人姓崔是河南人,会做面食,母亲请她到家里来手把手地教,直到蒸出又白又松软的大馒头来,母亲高兴得笑了。母亲不太会做针线活,看到有的妇女把新袜子剪开上袜底,这样的袜子结实耐穿,想剪又不敢下手,最后还是没学会,我们穿袜子又特费,只好破一个洞补一个疤又厚又难看。更难能可贵的是母亲学会了做棉布鞋,一针一针的纳鞋底,做出的鞋虽然不是多好看,但穿在脚上却很暖和。“三反、五反”的时候,父亲受冤被关押,停发了工资,我们失去了生活来源,我和哥哥也失学在家,母亲带着我们四个孩子给隔壁的油条铺捏煤球,好心的店主故意多给我们一点钱;母亲煮了好多的五香茶鸡蛋,让哥哥和我到火车站的候车室去卖;母亲事带着我们到郊区的菜农那,拣包包菜的叶子腌成咸菜;母亲还挎着竹篮装上香烟火柴、人参米、针头线脑等小东西到余家头去卖……母亲从一个大家闺秀的小姐变成了一个自食其力的劳动者。
我也记不清楚了,什么时候民间办学又再度兴起,母亲成了民办学校的教师,民办学校条件差,教师待遇又低,母亲毫不计较,母亲觉得能走上课堂就是庆幸的事了,认认真真地备课,一丝不苟地批改作业,一心一意地为着学生。母亲的毛笔字、钢笔字、粉笔字都写得很好,母亲会弹风琴,能自弹自唱,歌也唱得不错,主动兼教音乐课,那时即使在公办学校能用风琴教音乐课的人也不太多,母亲的音乐课为她所在的民办小学增色不少。这时我们家也从武昌搬到了汉口。也记不得是那一年了,总之是过了好多年头,母亲所在的民办小学终于转成了公办学校,母亲和她的妹妹一样成了公办教师。母亲从内心深处感谢新社会,感谢党,工作学习的热情更高了。
母亲以她的善良,她的厚道来对待她的学生,她的同事,她的邻居,她周围所有的人。一次母亲在一个班上音乐课,刚下课,一个调皮的男学生在课桌间奔跑,一不小心摔倒了,额头撞在桌子角上流出血来,母亲立即把学生送到了学校旁的诊所,自己出钱,治疗包扎后把学生送回了家,一开始家长还以为母亲有一定的责任,脸拉得老长,母亲觉察到家长的不快,没说什么就走了,第二天母亲又去看望这个学生,家长已从孩子的叙述中得知事情的原委,很不好意思地连连向母亲道歉,感谢母亲对孩子的关怀。母亲当了教导主任,对老师都一视同仁,听课后都充分肯定老师的长处,发现问题时也能与老师真诚地交流,母亲的真诚是出自内心深处的,也是感人的。有一个老师在文革中贴过母亲一张大字报,说余主任是县太爷的女儿,这也是文革中贴母亲的唯一的一张大字报,母亲一直都不知道这张大字报是谁贴的,时间长了也就忘得一干二净了,谁知,贴这张大字报的人自己却耿耿于怀内疚得很,因为平时母亲很关心她,教学上母亲给予她很大的帮助,在评先进时充分肯定她的成绩,她的孩子生病时,母亲主动替她上课,她实在是憋不住了,找到母亲说自己对不起人,母亲很平静,告诉她事情都过去了,不要放在心上,后来母亲一直对她很好,母亲退休后,这个老师还经常来看望母亲。有一次母亲上街的时候,被一辆偏三轮摩托车挂倒,开车的是两个解放军,他们俩一看摔倒的一个拄手杖的老人,吓得不得了,连忙把母亲扶到路边的一个小店里坐下,母亲感觉头有点晕心有点慌,看到站在面前的两个手足无措的年青人,母亲只是请他们赶快找点水来,喝点水定定神,两人急急忙忙找来一瓶矿泉水,喝完水母亲好了些反过来安慰两个解放军说:“你们别着急,再过一会我就好了。”其中一个发现母亲的脸上有点擦伤,要送母亲到医院去检查一下,母亲觉得没什么大碍不想去医院,两个解放军又说送母亲回家,母亲不想为这点小事惊动左邻右舍,也婉言谢绝了。在母亲的一再坚持下,两个解放军很不好意思地走了。身为医生的大哥知道这事以后,立即给母亲作了检查,还好只是脸上和小腿有轻微的挫伤,大哥嗔怪母亲没有记下摩托车的车号,没有让两个解放军留下单位地址或电话,说应该通知他们所在的部队,如果发生意外好找他们。母亲觉得既然自己没什么大问题就不应该兴师动众的,人家在外当兵,也不容易,部队上知道了,这俩人还能不挨批评,弄不好还要受处分,人家的父母知道了在家也不得安生,母亲替他人想的比自己要多得多。母亲的小腿上有一块发紫的地方,痛了好几天才好,她也不敢作声,生怕大哥说她。
母亲上大学时,学的是英语专业,可是早已荒废了,退休后时间也多了,就想再学英语,我的二女儿送给她一本《英语九百句》,她每天读啊写啊,学的很起劲也还蛮有效果,四弟精通英语,曾多次出国访问,每次从北京回家母亲都要和四弟用英语聊天,让四弟纠正她的发音。有一次母亲到中国银行去取钱,满脑子的还是英语,“ Miss, please give me a withdrawal sheet.”(小姐,请给我一张取款单。)出口就是一句英语。柜台里的年青女孩一下了愣住了,连忙说:“对不起,您是要存款吗?”母亲笑了,改用中文说:“要说对不起的是我,你看我这老太婆怎么说起英语来了,我取款。”周围的人都露出诧异的眼光,这其貌不扬的老人竟然会说英语,母亲取完钱转过身自言自语地说:“活到老,学到老嘛。才能不得痴呆症。”大家都笑了。
改革开放以后,政策越来越宽松,一九八五年,在各地统战部门的帮助下,母亲由父亲陪同,和母亲的四哥、五哥、三妹、小妹等一行十多人在香港和台湾的大姐、大姐夫等亲人会面。离散四十年后的团聚,令人激动不已,台湾的大姐抚摸着母亲略显粗糙的手,禁不住泪水扑簌扑簌直流,“这么多年,你们是怎么过来的?”母亲不愿意把自己受过的苦告诉分别多年的亲姐姐,只是平静地回答说:“我们过得很好,有退休工资,有医疗保险,什么都不愁。” 自此以后,台湾的大姐在经济上常常帮助母亲,母亲的生活质量有了很大的改善,后来母亲大姐的丈夫病逝,大姐移居美国,至今与母亲保持密切的联系。一九九三年我们的父亲不幸因病去逝,虽有四个儿子,母亲却喜欢一人独居在武汉市汇通路的老屋里,母亲的大姐曾想接母亲去美国,母亲还是那句话“我过得很好。”谢绝了大姐的好意,母亲喜欢平静的生活。(待续)