Description
Continuing the second part, you are asked to write a multiservice program in client-side. In addition to connecting to the original(BBS) server, you need to add the function of creating chatroom service. Unlike BBS, the chatroom is a directly interactive environment. The client can create a chatroom TCP server that other clients can join, and the client who creates the chatroom needs to store the chat record and manage the connections.
BBS Requirements
The service can serve at least 10 clients. Your server and client program must be able to handle all commands in the previous part (output results must be the same as the previous part).There are some new commands you have to implement for BBS service. These commands are described as follows:
(You don’t need to consider that users login on a different client-side and all ports used will be different.)
| Command format | Description | Result | |
| create-chatroom <port> | Create a chatroom which is named <username> in the client-side.
Each user can only create one chatroom.
Server store <port> to let other clients join chatroom.
After getting a response from the server successfully storing access info(e.g. port , host), the client-side starts to create a chatroom Server.
Failed execution: Fail (1): No user logged in. Fail (2):User has already created the chatroom.
Note: You have to send this command and get associated |
Success
|
start to create chatroom…
(action:create chatroom server. ) |
| Fail (1)
|
Please login first. | ||
|
Fail (2) |
User has already created the chatroom.
|
| message by TCP. | |||
| list-chatroom | List all Chatroom_ame, chatroom_status
(open or close)
Fail (1): No user logged in.
Note: You have to send this command and get associated message by UDP. |
Success | Chatroom_name Status
<chatroom_name> <status_1> <chatroom_name> <status_2>
|
| Fail (1) | Please login first.
|
||
| join-chatroom <chatroom_name> | Join other chatroom server.
To join the chatroom, you must login. The client get access info from BBS server to join chatroom server. When the client newly joins or rejoins, the client will get the latest three chat records , and the system reminds everyone in the chatroom that someone has joined us.
Failed execution: Fail (1): No user logged in. Fail (2):The chatroom does not exist.
Note: You have to send this command and get associated message by TCP. |
Success | Action: connection to chatroom server. |
| Fail (1)
|
Please login first. | ||
| Fail (2) | The chatroom does not exist or the chatroom is close. | ||
| attach | The instruction is for the chatroom owner.
Attach the chatroom but the system will not send out a reminder.
Failed execution: Fail(1) : No user logged in. Fail(2) : User does not create a chatroom. Fail(3): User’s chatroom is closed.
Note:This command is a client-side command and does not need to be sent to the BBS server. |
Success | Welcome to the chatroom. |
| Fail(1) | Please login first. | ||
| Fail(2) | Please create-chatroom first. | ||
| Fail(3) | Please restart-chatroom first. | ||
| restart-chatroom | Restart the chatroom, when the chatroom is closed.
The status of chatroom changed to “open”.
After getting a response from the server successfully changing status, the client-side starts to create a chatroom Server.
Failed execution: Fail(1) : No user logged in. Fail(2) : User did not create a chatroom. Fail(3) : The status of the chatroom is still “open”.
Note: You have to send this |
Success | start to create chatroom… action:create chatroom server. |
| Fail(1) | Please login first. | ||
| Fail(2) | Please create-chatroom first. | ||
| Fail(3) | Your chatroom is still running. | ||
| command and get associated message by TCP. | |||
| logout | If this user has created a chatroom,the system reminds the user to do” attach” and “leave-chatroom” first .
Failed execution: Fail(1) : No user logged in. Fail(2) : Chatroom server is running.
Note: You have to send this command and get associated message by TCP. |
Succes | Bye, <username>. |
| Fail(1) | Please login first. | ||
| Fail(2) | Please do “attach” and “leave-chatroom” first. | ||
| exit | Close chatroom and connection to BBS. | ||
Chatroom Requirements
The chatroom TCP server can serve at least 5 clients. ,you are asked to implement a directly interactive environment. Each chat record contains the sender, send time, and message. When the client newly joins or rejoins , the client will get the latest three chat records(does not contain system messages).There are some new commands you have to implement for chatroom service. These commands are described as follows:
| leave-chatro om | If your role is chatroom owner.
Take the following action.
step1: Close chatroom server. step2: The status of chatroom changed to “close”. step3: Switch mode to the original server (BBS).
If your role is not chatroom owner. Take the following action.
step1:Switch mode to the original server (BBS).
Note: You have to send this command and get associated message by TCP. |
Success | Welcome back to BBS. |
| detach | The instruction is for the chatroom owner. Detach the chatroom but do not close the chatroom.
Note:This command is a client command and does not need to be sent to the BBS server. |
Success | Welcome back to BBS. |
Scenario
Run your server first, and run your client program to connect to your server. If the line only shows
“% “, that means we type <Enter> in our client program. It is just for the height alignment of two columns here. You can ignore that. The sample outputs of the client program are listed as follows:
assume demo environment in localhost
| *************************
**Welcome to the chatroom** ************************* sys [4:06] : Bob join us. hello Bob. Bob[4:07] : hello Brad. Nice to meet you. Bob[4:08] : me too.
|
*************************
**Welcome to the chatroom** ************************* Brad[4:07] : hello Bob. hello Brad. Brad[4:08] : Nice to meet you. me too. leave-chatroom
|
| *************************
**Welcome to the chatroom** ************************* sys [4:06] : Bob join us. hello Bob. Bob[4:07] : hello Brad. Nice to meet you. Bob[4:08] : me too. sys [4:09] : Bob leave us.
|
leave-chatroom Welcome back to BBS.
% whoami Bob % join-chatroom Brad
|
| *************************
**Welcome to the chatroom** ************************* sys [4:06] : Bob join us. hello Bob. Bob[4:07] : hello Brad. Nice to meet you. Bob[4:08] : me too. sys [4:09] : Bob leave us. sys[4:10] : Bob join us. detach |
*************************
**Welcome to the chatroom** ************************* Bob[4:07] : hello Brad. Brad[4:08] : Nice to meet you. Bob[4:08] : me too.
|
| *************************
**Welcome to the chatroom** ************************* sys [4:06] : Bob join us. hello Bob. Bob[4:07] : hello Brad. Nice to meet you. Bob[4:08] : me too. sys [4:09] : Bob leave us. sys[4:10] : Bob join us. detach Welcome back to BBS. % |
*************************
**Welcome to the chatroom** ************************* Bob[4:07] : hello Brad. Brad[4:08] : Nice to meet you. Bob[4:08] : me too. |
| % create-chatroom 8080
User has already created the chatroom. % |
|
| % restart-chatroom
Your chatroom is still running. %
|
|
| % logout
Please do “attach” and “leave-chatroom” first. % |
|
| *************************
**Welcome to the chatroom** ************************* Bob[4:07] : hello brad. Brad[4:08] : Nice to meet you. Bob[4:08] : me too. hello everyone.
|
|
| % attach
|
*************************
**Welcome to the chatroom** ************************* Bob[4:07] : hello brad. Brad[4:08] : Nice to meet you. Bob[4:08] : me too. hello everyone.
|
| % attach
*************************** **Welcome to the chatroom** *************************** Brad[4:08] : Nice to meet you. Bob[4:08] : me too. Bob[4:11] : hello everyone. leave-chatroom
|
************************* **Welcome to the chatroom** ************************* Bob[4:07] : hello brad. Brad[4:08] : Nice to meet you. Bob[4:08] : me too. hello everyone. |
| % leave-chatroom Welcome back to BBS.
% list-chatroom chatroom-name status Brad close % restart-chatroom
|
*************************
**Welcome to the chatroom** ************************* Bob[4:07] : hello brad. Brad[4:08] : Nice to meet you. Bob[4:08] : me too. hello everyone. sys[4:12] : the chatroom is close. Welcome back to BBS. %
|
| % restart-chatroom | |
| start to create chatroom…
************************* **Welcome to the chatroom** ************************* Brad[4:08] : Nice to meet you. Bob[4:08] : me too. Bob[4:11] : hello everyone. % leave-chatroom Welcome back to BBS. |
|
| % logout bye , Brad. | % restart-chatroom
Please create-chatroom first. % |
| % restart-chatroom Please login first. | |
| % exit bash$ |




