1、 编写一服务器程序,使用TCP端口14000提供一种四则运算服务,同一时刻只为一个客户端服务,要求:
(1) 输出“Waitting…”,等待客户端连接,当接收到连接向客户端发送“welcome”字符串,并输出提示信息:“Client connected!”
(2) 等待接收客户端的数据,若收到合法算式,则计算出结果发送给客户端,并输出算式和答案,重复(2)。若接收到 “quit”字符串,则向客户端发送“goodbye”字符串,中止与该客户端的连接,释放资源,并输出提示信息“Client quit!”,跳到(1)。若收到其它字符串,则向客户端发送“invalid data”,重复(2)。
(3) 若在接收数据时检测到客户端正常退出,则释放资源,输出提示信息“Client close!”跳到(1)
(4) 出现任何错误时,提示用户错误信息,然后退出程序,退出前要释放所有该释放的资源。注:
(1) 所有字符串均为null terminated,假设客户端不会发送非字符串格式的数据,且字符串最大长度为20。
(2) 合法算式格式:一字符串,结构为“操作数1 运算符 操作数2”,操作数1、2均为小于1000的非负整数,运算符为+-*/之一,如“3+5”、“67/9”、“0*100”、“3-60”对除法运算,如果除数为0不属于合法算式,不能整除时结果只取商不取余数。如果操作数大于等于1000也不属于合法算式。
(3) 计算结果格式:一字符串,结构为“运算结果”,如与(2)中算式对应结果分别为“8”、“7”、“0”、“-57”。
(4) 提示:将整数转化为字符串可以用sprintf函数实现(此函数在stdio.h中声明),例:
int i=89;
char s[20]
sprintf(s,”%d”,i);
则s的值为“89”。也可用其它方法实现。
(5) 仅要求编写服务器程序,不要求编写配套的客户端程序。