高手请进,解答就给分
2、 在Internet上有两个服务器server1和server2,它们均在TCP的14000端口提供在我们在作业5中实现的“名字查询”服务,编写一客户端程序,要求:
(1) 由用户输入server1和server2的IP地址,采用点分十进制输入
(2) 连接server1和server2:
l 如果先完成的连接成功,则使用这个连接,转到(3)。
l 若先完成的连接不成功,则等待另一个连接完成,如果另一个连接成功,使用另一个连接,转到(3),若仍不成功,转到(7)。
l 若两个连接同时完成,则:(a)两个都成功,则随便挑一个连接使用,关闭另一个,转到(3)。(b)两个都失败,转到(7),(c)一个成功一个失败:使用成功的连接,转到(3)
l 注:在任何情况下跳转之前要分别输出server1和server2的连接状态,格式为“server1 连接成功(或)连接失败(或)连接未完成!”。server2格式相同。在有成功连接可用时要报告使用的是与哪个服务器的连接。
(3) 向第(2)中确定的服务器接收欢迎信息并输出,然后发送查询请求:“3”,然后接收服务器的响应信息并输出。
(4) 发送“0”,接收服务器的欢送信息并输出,然后中止连接。
(5) 如果(2)中有连接尚未完成,则此时等待直至其完成。如果连接成功,断开与其的连接,提示用户“Another server connect success!”。如果连接错误,提示用户“Another server connect fail!”。
(6) 释放资源,退出程序。
(7) 出现任何错误时,提示用户错误信息,然后退出程序,退出前要释放所有该释放的资源。
注:
(1) 不能使用多线程技术。
(2) 提示:使用非阻塞模式和select函数。参考课件chap8关于select函数可写、出错事件的详细描述。connect成功后可恢复为阻塞模式以方便后续操作。
(3) 第(5)步功能选做。