首页
网站开发
桌面应用
管理软件
微信开发
App开发
嵌入式软件
工具软件
数据采集与分析
其他
首页
>
> 详细
讲解program程序、辅导C/C++编程语言、Java,Python程序调试 辅导Python程序|讲解Java程序
项目预算:
开发周期:
发布时间:
要求地区:
ProcChat
You are to develop a localised chat server that will support a number of clients through named pipes
(FIFOs). The server and client applications will communicate through a xed sized binary protocol.
The server will manage a global named pipe for establishing connections, after a connection has
been established it will construct a separate read and write named pipes for the client to utilise. The
client will communicate to the server over the named pipes. The server must be able to read from all
clients asynchronously.
Global Process
The global server is involved in facilitating the initial connection from clients. The initial message
from the client will be an identier prex for the named pipes to be constructed. The client will read
and write to the respective pipes that are post xed with _RD and _WR .
This process will be responsible for creating the separate client handler daemons responding to
each client as a separate process. These processes will need to listen to all messages sent from the
client and write to back to the client and any other client's named pipe to relay messages from client
to others.
The global event pipe goes by the name gevent , this pipe should only be read by the global process
but can be written to by any other process.
Client-Handler
A client-handler is spawned when a client is connected, a client-handler will be relegated to a specic
domain. A domain is simply a folder relative to the current working directory.
The Protocol
The system uses a binary message protocol to facilitate communication between the server, client-
handler and client. The server and client interaction is simply for acknowledgement and setting up
the named pipes. The main protocol will be used between the client-handler and the client. The clienthandler
is spawned by the global server process to handle a client and will communicate with the
client.
The binary message is broken up two parts, the �rst part being the type of message and the second
being contents related to the type. The type will determine how to interpret the contents in the
second part. Each message is 2048 bytes.
Under each message type in the following sections, the binary representation will be presented. The
type is at the start of the message and is 2 bytes in size.
Anatomy of a message:
+-------------+---------------------+
|type: 2 bytes| contents: 2046 bytes|
+-------------+---------------------+
GlobalProcess-Client Protocol
CONNECT
Type Decimal: 0
Type Binary: 00000000 00000000
The client will connect to the server, the server will construct two named pipes the identier. The
client is expected to connect to the named pipes after sending a well formed connect message to the
server.
The identier part of the message is maximum 256 characters ASCII encoded. The domain
component will map to a folder relative to the current working directory.
ClientHandler-Client Protocol
SAY
Type Decimal: 1
Type Binary: 00000000 00000001
Packet Layout:
Type: 2bytes
Message: 1790bytes, ASCII characters
The client will send the SAY command to the client-handler, the client-handler will need to relay this
to all other clients that are connected to same domain using the RECEIVE message. The contents
maximum is 1790 characters.
SAYCONT
Type Decimal: 2
Type Binary: 00000000 00000010
Packet Layout:
Type: 2bytes
Message: 1789bytes, ASCII characters
Termination: 1byte, 255 indicates termination
The client will send the SAYCONT command to the client-handler, this is a variation on SAY in which
the server will relay the message as a RECVCONT. SAY command typically sends one message within
2046 bytes of its message contents. SAYCONT reserves the 2046th byte as a termination byte for the
message's contents, when the termination byte represents the value 255, the message is considered
complete. The maximum message is 1789 characters.
The bu�ering of the SAYCONT messages will occur on client side. Note this detail when testing your
code.
RECEIVE
Type Decimal: 3
Type Binary: 00000000 00000011
Packet Layout:
Type: 2bytes
Identi�er: 256bytes
Message: 1790bytes
This message is sent from the client-handler to all other clients (excludes sender). When a client has
sent a SAY message to the client-handler, the client-handler relays the message along with the
identier to all other clients in the domain. The contents (2046 bytes) where the rst 256 bytes are
reserved for the identier and the 1790 bytes afterwards is the message.
RECVCONT
Type Decimal: 4
Type Binary: 00000000 00000100
Packet Layout:
Type: 2bytes
Identier: 256bytes
Message: 1789bytes Termination: 1byte
Similar to SAYCONT, the client handler will be sending the message in chunks to the client. The
message will contain an identier (who sent it) and send termination byte.
The buering of the RECVCONT messages will occur on client side. Note this detail when testing.
DISCONNECT
Type Decimal: 7
Type Binary: 00000000 00000111
Packet Layout:
Type: 2bytes
This message is sent from the client to the client-handler. This will tell the client-handler that the
FIFOs can be removed and the handler can be terminated.
Extension
PING
Type Decimal: 5
Type Binary: 00000000 00000101
Packet Layout:
Type: 2bytes
The PING message is sent from the client-handler to the client. This is to check that the client is still
alive in the event the process crashed. This extension requires some form of asynchronous IO to be
implemented. The PING message is sent every 15 seconds from the server.
PONG
Type Decimal: 6
Type Binary: 00000000 00000110
Packet Layout:
Type: 2bytes
The PONG message is sent from the client to the client-handler. This is the response to the PING
message being sent from the server to check if it is still alive.
Daemon Alive
Each client-handler will send a signal to the global process under SIGUSR1 to indicate that it is
shutting down. The global process can use this information, to clean up the process before the child
becomes a zombie process.
As an extension, you are required to implement PING and PONG messages that will check that the
client is still alive. Every 15 seconds, the client-handler will send a PING message to a client, requiring
the client to respond to the message. with PONG.
Restrictions
You are prohibited from using threads within this assignment. Communication between users in the
chat room must be facilitated via the client handler. The client handler will be a separate process
from the global process.
No VLAs
No Excessive CPU usage
No Zombie Processes (clean up your processes when you can)
If your program does not adhere to these restrictions, your submission will receive 0.
Make sure you thoroughly test your program and construct a mini-client program to interact with
your server.
Marking Criteria
The following is the marking break, each point contributes a portion to the total 15% of the
assignment. You will receive a result of zero if your program fails to compile.
5% Test Cases - Your Program must pass public, private and hidden test cases, to achieve the
maximum number of points awarded for this section.
6% Solution Discussion - You will need to answer questions from a teaching stamember
regarding your implementation. You will be required to attend zoom session with teaching
sta member after the code submission deadline. A reasonable attempt will need to be
made, otherwise you will receive zero for the assessment. Failure to attend will result in zero
for the assessment. In this session, you will be asked to explain:
How your solution communicates between the client-handler and client?
How are you handling erroneous messages?
How is your solution handling client failure?
Answer further questions regarding your test cases, code style and knowledge.
2% Extension - Your client-handler must be able to detect when a client is no longer alive. This
must be a clear use of non-blocking IO and multiplexing.
2% Test Cases - Your solution must include a suite of test cases that should be automated and
executable with the given make script. Please make sure your test suite outputs the result of
each test case in a human readable format.
软件开发、广告设计客服
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-23:00
微信:codinghelp
热点项目
更多
urba6006代写、java/c++编程语...
2024-12-26
代做program、代写python编程语...
2024-12-26
代写dts207tc、sql编程语言代做
2024-12-25
cs209a代做、java程序设计代写
2024-12-25
cs305程序代做、代写python程序...
2024-12-25
代写csc1001、代做python设计程...
2024-12-24
代写practice test preparatio...
2024-12-24
代写bre2031 – environmental...
2024-12-24
代写ece5550: applied kalman ...
2024-12-24
代做conmgnt 7049 – measurem...
2024-12-24
代写ece3700j introduction to...
2024-12-24
代做adad9311 designing the e...
2024-12-24
代做comp5618 - applied cyber...
2024-12-24
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 9951568
© 2021
www.rj363.com
软件定制开发网!