国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

COMS3200 代做、代寫 Python/C++語言程序
COMS3200 代做、代寫 Python/C++語言程序

時(shí)間:2024-09-02  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)



COMS**00 Assignment 1 2023S1
100 total marks, 25% overall course mark
Due: 15:00 19 April 2023
1 Preface
1.1 Notes
 This document is subject to change for the purposes of clarification. Changes made since the
original release will be highlighted in red.
Please post any questions on the course Ed stem page.
It is strongly recommended that all programming tasks are done in Python 3.6.8 or C.
1.2 Revision History
 20 March, 2023: Version 1.0 Released.
 24March, 2023: Version 1.1 Clarifications to startup behaviour, malformed commands and python
version.
 29 March, 2023: Version 1.2 Clarifications to commands and queue behaviour.
 31 March, 2023: Version 1.3 Clarifications to commands
2 Part A: Problem Solving Questions
This section is worth 25% of the assignment.
The scope of this section is chapters **3.
Show full working for all questions. Marks may be withheld if working is not provided.
The question set is located on Blackboard under Assessment =? Assignment 1 =? Part A: Problem
solving questions.
There is no time limit to submit these answers and multiple resubmissions are permitted. Only the
last submitted attempt will be marked.
3 Part B: Wireshark Questions
This section is worth 20% of the assignment.
This section covers ICMP, HTTP, DNS and DHCP.
The question set is located on Blackboard under Assessment =? Assignment 1 =? Part B:Wireshark
questions and the capture file is located under Assessment =? Assignment 1 =? Part B: Packet
capture File.
There is no time limit to submit these answers and multiple resubmissions are permitted. Only the
last submitted attempt will be marked.
4 Part C: Socket Programming
This section is worth 55% of the assignment.
4.1 Goals
You will implement a multi-channel chat application using socket programming in Python 3 or C.
You will create two programs; a chat client and a chat server.
4.2 Programs
You must use socket and multithreading libraries. The use of any other third-party libraries is not
allowed. You must implement all chat logic yourself.
If you choose to use Python then you must name your programs chatclient.py and chatserver.py.
If you choose to use C then you must name your programs chatclient and chatserver.
4.3 Report
You must also submit a plaintext README file named readme.txt. This file must contain:
A brief and high-level abstract detailing your overall approach.
 A list of functions you implemented with their respective descriptions.
 An overview to how you tested your code.
 IEEE references to any code you used and was not written by you. This includes generative AI.
4.4 Requirements
4.4.1 High-level Requirements
You must implement a server program which can support concurrent communication between multiple
clients across multiple channels.
The server must be able to maintain at least three distinct chat channels simultaneously, each of which
may contain at least five simultaneous connections. The exact operation of the server’s channels will
be specified in an external config file.
As clients connect to a channel within the server, they are to be placed in a waiting queue until there
is room available for them to join the channel.
Once in a channel, clients are able to send messages to other clients within that same channel.
Clients are able to specify the username which will be used to identify them within the channel. Your
client and server programs must rely on socket and multithreading libraries in either Python or C.
If you wish to use another programming language, you must get written permission from the course
coordinator.
You may use any transport layer protocol but it is highly recommended you use TCP.
2
4.4.2 Functional Requirements
The server must be able to be started by one of the two below commands:
$ ./ chatserver configfile
$ python3 chatserver.py configfile
where configfile is the path to the server configuration file. The client must be able to be started by
one of the two below commands:
$ ./ chatclient port username
$ python3 chatclient.py port username
where port is the port of the desired channel and username is the name which should be used to identify
the client in the chat channel.
All lines in the server configuration file must follow the below format:
channel
where is the name of the channel, is the port that channel should use
and is the maximum number of users who can be active at once within a channel.
The below requirements must be met:
Each channel must operate on independent sockets.
 No two channels can have the same name or port.
 No channel should use the ephemeral port.
 Channel names cannot begin with a number.
There must be at least three channels in the config file.
 Each channel’s capacity must be at least five.
If the configuration file is missing, invalid or not specified, then the server process should exit im-
mediately with status code 1. Similarly, if the client cannot connect to the server due to malformed
arguments or an invalid port number, then the client process should also exit immediately with status
code 1.
Once the server is running, it will accept incoming client connections. Before clients are permitted to
enter their requested channel, they will be entered into a first-in-first-out waiting queue specific to that
channel. Once there is a free position in the channel, the longest-waiting client may be removed from
the waiting queue and entered into the channel.
Upon entering the waiting queue, the below should be displayed on the client’s stdout:
[Server message ()] Welcome to the channel , .
Where is the server’s current time in 24 hour time and in hh:mm:ss format, is
the name of the channel the client is waiting to join and is the name of the client.
3
When the client joins the waiting queue, and whenever a client leaves the queue, the below should be
displayed on the client’s stdout:
[Server message ()] You are in the waiting queue and there are user(s) ahead of
you.
where is the number of users in the waiting queue who joined before this client.
When the client is finally able to join the channel, or if the queue is empty and there is already available
space in the channel, the above message is not displayed. Instead, the below message is displayed to
the stdout of every client in the channel:
[Server message ()] has joined the channel.
and the below is displayed to the server’s stdout:
[Server message ()] has joined the channel.
Clients are able to send messages by typing in stdin. These messages are then sent to all other clients
currently in the same channel. For example, if the client named Dan types Hello COMS**00 students!
into his stdin, the below message should be displayed to the stdout of both the server and all clients
within the channel:
[Dan ()] Hello COMS**00 students!
4.4.3 Clientside Commands
Besides just broadcasting messages to each other, clients are also able to enter special commands into
stdin:
? /whisper
Only the client named receives the message. It will be displayed as:
[ whispers to you: ()]
Where is the username of the client which typed the whisper command. If
is not in the channel, the whisperer will receive this message to stdout:
[Server message ()] is not here.
Regardless of whether or not the target client is present in the channel, the below message will
be displayed to the server’s stdout:
[Dan whispers to : ()]
? /quit
The client who uses this command exits the channel and closes their connection to the server. The
below message is displayed to the stdout of both the server and all remaining users:
[Server message ()] has left the channel.
This command should be usable while the client is still within a waiting queue as well as within a
channel. If a client in the queue uses this command then only the server should receive the above
message.
 /list
The list of all channels is displayed to the client’s stdout in the order in which they are listed
in the server configuration file. Each channel is listed on a separate line according to the below
format:
[Channel] //.
where is the name of the channel, is the current number of clients
currently in the channel, is the total capacity of the channel and is
the number of clients currently in the queue.
4
 /switch
The client leaves their current channel or waiting queue and joins the waiting queue for the spec-
ified channel. If the specified channel exists, then the below message is displayed to the stdout of
both the server and every client remaining in the channel:
[Server message ()] has left the channel.
The client who issued the switch command should receive the waiting queue messages (pg 3) for
that channel. If the channel does not exist then the client will stay in the channel and the below
message will be displayed to their stdout:
[Server message ()] does not exist.
No two clients with the same username should be in the same channel at the same time. If a
client attempts to switch into a channel where there is already a client with the same username
(or in its respective waiting queue), the below should be displayed to that client’s stdout:
[Server message ()] Cannot switch to the channel.
The client should not leave the channel and no messages will be sent to any other clients or the
server. This command should be usable within both channels and waiting queues.
? /send
The file on the sender’s machine located at will be sent to the client named .
The below message will be displayed to the sender’s stdout:
[Server message ()] You sent to .
and the below message will be displayed to the server’s stdout:
[Server message ()] sent to .
If the target client is not within the same channel as the sending client, then neither of the above
two messages are displayed and the file will not be sent. Instead, the below message will be
displayed to the sender’s stdout only:
[Server message ()] is not here.
If the file specified by does not exist, then only the below is displayed to the sender’s
stdout:
[Server message ()] does not exist.
If the file can be sent, it should be saved to the same directory as the target’s chatclient exe-
cutable.
If both the file does not exist and the target client is not within the same channel as the sender,
then both error messages should be displayed. The invalid client message should be displayed
first.
N.B. For testing purposes, we will always be starting the server process from its directory.
Anything starting with /which is not one of these commands should be treated as a chat message.
5
4.4.4 Serverside Commands
The server is also able to use these below commands by typing them into stdin:
 /kick :
If there is a client named , in the channel named , they will be removed
and their connection to the server will be closed. The below message is displayed to the stdout all
remaining users within that channel:
[Server message ()] has left the channel.
and the below message is displayed to the stdout of the server:
[Server message ()] Kicked .
If there is no such client in the specified channel then nothing is displayed to the clients’ stdout
and the below is displayed on the server’s stdout:
[Server message ()] is not in .
If the specified channel does not exist then nothing is displayed to the clients’ stdout and the
below should be displayed to the server’s stdout:
[Server message ()] does not exist.
 /mute :
Prevents the client named in the channel named from sending any
messages for seconds.
If this client exists then the below will be displayed to the server’s stdout:
[Server message ()] Muted for seconds.
The below is displayed to the muted client’s stdout:
[Server message ()] You have been muted for seconds.
and the below is displayed to every other client’s stdout:
[Server message ()] has been muted for seconds.
If a client tries to send messages or use /whisper while muted, the below will be displayed to their
stdout:
[Server message ()] You are still muted for seconds.
Where is the number of seconds remaining before the client is unmuted. The message they
attempted to send will not be sent to any other users.
If the target client is not in the specified channel or the channel does not exist, the below will be
displayed to the server’s stdout:
[Server message ()] is not here.
must be a positive integer. If anything other than a positive integer is specified, then the
below message should be displayed to the server’s stdout:
[Server message ()] Invalid mute time.
All commands except /whisper should still be usable while muted.
6
 /empty
Every client in the channel named will have their connection closed. The below
will be displayed to the server’s stdout:
[Server message ()] has been emptied.
If the specified channel does not exist, then the below will be displayed to the server’s stdout
instead:
[Server message ()] does not exist.
No clients in the emptied channel should receive any messages.
/shutdown
The entire server will shut down. Connections to every client in every channel and waiting queue
will be closed and the server process will exit. No clients should receive any messages.
Anything entered into the server’s stdin which is not one of these commands should be ignored.
4.4.5 Miscellaneous Requirements
If you choose to use C, then you must also submit a makefile. Both your client and server program
must be able to be compiled with the $ make command.
If your code does not compile, you might not receive any marks.
Both client and server processes should be runnable on Moss.
The use of fork() and select() in C and Python are expressly forbidden - This includes the
Python’s select library functions such as devpoll, epoll, kqueue, poll, kevent and select.
Only one server process should run at any time.
 When a client’s connection with the server ends, the client process should exit.
 No two clients with the same name should be within the same channel at the same time. If client
attempts to join a channel already containing another client of the same name when first starting
from the command line, the below message should be displayed to the client’s stdout:
[Server message ()] Cannot connect to the channel.
and the client process should immediately exit.
 If a client in a channel does not send any message or use any command for 100 seconds, then it
should be removed from the channel and their connection should be closed. The below message
should be displayed to the stdout of both the server and all remaining clients in the channel:
[Server message ()] went AFK.
If a client is muted by the server, the timeout counter should freeze until the client becomes
unmuted. If a client attempts to chat or issues a command while muted, their timeout counter
should not reset.
Everything taken from stdin should have whitespace stripped from both sides before being eval-
uated as a chat message or a command.
 Commands may have multiple spaces between arguments.
7
4.5 Marking Breakdown
Marks will be awarded according to the following breakdown:
Client and server processes start correctly or exit on invalid startup parameters - 1 mark
 Chat messages and announcements can be sent/received in at least one channel - 4 marks
Chat messages and announcements can be sent/received in at least three channels. Chat mes-
sages and announcements sent to one channel do not appear in other any other channels - 5 marks
Clients are held in the waiting queue until space in the correct channel is available - 5 marks
 Clients are correctly removed from chat after timing out - 5 marks
 /whisper and /quit work - 5 marks
 /kick and /empty work - 5 marks
 /shutdown works - 5 marks
 /list and /switch work - 5 marks
 /mute works - 5 marks
 /send works - 10 marks
Total: 55 marks.
N.B.: Although the README itself is not assigned marks, it is still mandatory for integrity purposes.
Failure to include the README file will result in a ≥50% penalty.
5 Miscellaneous Notes
 "Clients within a channel" refer only to those in the channel and not those in the related waiting
queue.
 Your code will not be tested for memory leaks but having large memory leaks may render your
code untestable. If you make any critical programming mistakes which impact our ability to test
your code, your marks may be severely limited.
 For marking purposes, you should ignore commands which have too many or too few arguments.
6 Integrity
All code submissions will be checked for similarity and plagiarism. All code in your submission which
was not written by you (or was written by you for a previous assignment) must be correctly referenced in
IEEE format in both in your code and your README file. This includes code written by generative AI.
7 Submission
You must submit all source code files and your README file together in a zip file. This zip file must
be named A1_sxxxxxxx.zip, where the sxxxxxxx is your student ID. This zip file must be submitted to
the course Blackboard page under Assessment =? Assignment 1 =? Part C: Code Submission.

請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp






 

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:代做 COMP3506、代寫 Python 編程設(shè)計(jì)
  • 下一篇:FIT1047 代做、代寫 java /Python 設(shè)計(jì)編程
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真技術(shù)服務(wù)
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲勞振動(dòng)
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)40個(gè)行業(yè)
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)4
    超全面的拼多多電商運(yùn)營技巧,多多開團(tuán)助手,多多出評(píng)軟件徽y1698861
    超全面的拼多多電商運(yùn)營技巧,多多開團(tuán)助手
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服務(wù)平臺(tái)
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內(nèi)
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗(yàn)證碼 寵物飼養(yǎng) 十大衛(wèi)浴品牌排行 suno 豆包網(wǎng)頁版入口 wps 目錄網(wǎng) 排行網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    欧美亚洲丝袜| 国产精品初高中精品久久| 国产精品一区二区久久国产| 久久国产欧美精品| 欧美一区二区三区综合| 国产综合av一区二区三区| 国产成人一区二区三区| 国产精品视频免费在线| 亚洲欧美久久久久一区二区三区| 欧美高清视频一区| 97久久超碰福利国产精品…| 国产精品乱码视频| 青青在线视频免费| 国产一区二区不卡视频| 国产精品极品美女粉嫩高清在线 | 日韩视频免费播放| 99在线免费视频观看| 另类专区欧美制服同性| 一区二区精品视频| 国产精品一区视频网站| 国产精品都在这里| 免费在线成人av| 欧美精品一区二区免费| 蜜桃成人免费视频| 国产精品久久久久久久9999| 亚洲AV无码成人精品一区| 成人免费淫片aa视频免费| 欧美理论电影在线观看| 午夜一区二区三视频在线观看| 国产麻花豆剧传媒精品mv在线| 久久av资源网站| 美女主播视频一区| 久久亚洲影音av资源网| 欧美日韩第二页| 久久久久久久久久av| 日本福利视频导航| 国产高清一区视频| 日韩在线三级| 久久天堂国产精品| 日本高清久久一区二区三区| 日韩av高清| 久久久噜噜噜久久久| 日韩欧美一区二区三区久久婷婷| 久久久久久久久网| 欧美老熟妇喷水| 国产精品色午夜在线观看| 国产日韩欧美在线播放| 欧美激情国产精品| 91精品在线影院| 欧美人成在线观看| 欧美一级中文字幕| 国产精品99一区| 一区二区在线高清视频| 国产极品尤物在线| 日韩av在线一区二区三区| 国产成+人+综合+亚洲欧洲| 日韩一二三区不卡在线视频| 国产精品欧美亚洲777777| 欧美少妇一级片| 国产精品久久久久久久久婷婷| 国产在线青青草| 中文字幕在线乱| 久久人妻精品白浆国产| 日韩免费视频播放| 一区二区三区欧美成人| 国产精品99久久久久久白浆小说| 欧美一级免费在线观看| 国产精品高潮粉嫩av| 成人免费视频91| 日韩欧美一区三区| 国产不卡视频在线| 国产在线一区二区三区播放| 久久久久国产精品www| 成人免费午夜电影| 欧美中日韩在线| 欧美激情一二三| 久久一区免费| 亚洲精品视频一二三| 国产精品视频xxx| 成人av在线播放观看| 欧美一级黄色网| 蜜臀久久99精品久久久久久宅男| 久久久欧美精品| 加勒比海盗1在线观看免费国语版 加勒比在线一区二区三区观看 | 国产精品一区=区| 日本国产在线播放| 精品国产电影| 久久精品国产精品国产精品污| 激情六月丁香婷婷| av观看久久| 蜜桃成人在线| 日韩亚洲在线视频| 欧美激情亚洲激情| 国产精品二区三区四区| 久热国产精品视频一区二区三区| 欧美国产综合视频| 亚洲精品中文字幕无码蜜桃| 久久九九有精品国产23| 91精品国产成人www| 精品1区2区| 日本久久久久久久| 精品国产91亚洲一区二区三区www| 久久日韩精品| 国产伦视频一区二区三区| 欧美亚洲一二三区| 青草热久免费精品视频| 亚洲欧洲免费无码| 国产精品成人在线| 国产精品少妇在线视频| 久久99久久99精品| 91九色视频在线| 成人a视频在线观看| 免费看国产精品一二区视频| 日韩欧美视频第二区| 日韩视频免费在线观看| 国产福利精品视频| 国产区二精品视| 奇米影视亚洲狠狠色| 日本一区视频在线| 亚洲欧洲一二三| 欧美日韩成人免费| 欧美人成在线视频| 国产精品国产精品国产专区不卡| 久久久久久久久久久91| 亚洲欧洲免费无码| 欧美日韩成人在线播放| 国产精品入口夜色视频大尺度| 久久精品丝袜高跟鞋| 116极品美女午夜一级| 成人在线观看a| 国产在线精品一区二区中文| 欧美在线一级视频| 日本精品视频在线播放| 午夜久久资源| 日韩免费在线观看av| 日本91av在线播放| 日韩欧美精品在线不卡| 日韩a∨精品日韩在线观看| 午夜肉伦伦影院| 日韩人妻精品无码一区二区三区 | 国产激情在线观看视频| 精品国产一区二区三区四区精华| 日韩成人手机在线| 日韩国产小视频| 美媛馆国产精品一区二区| 国产玖玖精品视频| 91精品国产一区| 久久久久久亚洲精品中文字幕| 国产成人拍精品视频午夜网站| 国产精品久久久久久久久久尿| 精品国产91亚洲一区二区三区www| 在线免费一区| 欧美一级视频一区二区| 日本手机在线视频| 亚洲a成v人在线观看| 欧美一级免费看| 青青在线视频观看| 免费在线a视频| 粉嫩av一区二区三区免费观看| 丝袜美腿精品国产二区| 欧美精品在线免费| 欧美一级日本a级v片| 麻豆视频成人| 国产极品美女高潮无套久久久| 久久久精品国产网站| 亚洲一卡二卡| 青青草精品视频在线| 国产乱子夫妻xx黑人xyx真爽| 国产高清精品软男同| 久久综合伊人77777| 天天综合五月天| 美国av一区二区三区| 91国语精品自产拍在线观看性色| 久久精品2019中文字幕| 亚洲自拍的二区三区| 欧美亚洲另类久久综合| 欧美伊久线香蕉线新在线| 国产成人+综合亚洲+天堂| 国产精品沙发午睡系列| 亚洲一区二区三区乱码aⅴ| 欧美亚洲第一区| 国产免费一区二区三区四在线播放| 国产ts一区二区| 精品中文字幕乱| 欧美在线视频导航| 91精品国产综合久久香蕉最新版| 国产精品视频xxx| 亚洲一区二区自拍| 国内久久久精品| 国产成人一区二区三区小说| 欧美伦理91i| 欧美中文在线观看国产| 97碰在线视频| 九色精品美女在线| 激情小说综合网| 国产盗摄视频在线观看| 欧美精品在线免费播放| 欧美亚洲国产日韩2020| 91精品久久久久久久久| 欧美日本黄视频|