FileserverapplicationInthisassignmentyoudevelopafileserverapplicationbasedonsocketprogramming.Thecodehastwoparts:serversideandclientside.Theserverwhichisafileserverhasanumberoffilesavailableontheharddisk(localfolderofthecodeforinstance).Theclientcaneitherrequesttoreceive(download)oneofthosefilesoruploadanewfiletotheserver.ClientSide:Theclientsgraphicaluserinterface(GUI)allowstheusertoeitheruploadafiletothefile serverordownloadafilefromthefileserver.Theuserdecidesabouttheuploadordownloadfunctionalitybyprovidingthefilenameoraddressandpressingthedownloadorupload button.Upload:Intheuploadmodetheuserfirstchoosesthefiletobeuploadedfromthefilesonitslocalharddrive.Youcanimplementthis intwoways:1-YourGUIhasachoosefile button.Whenyouclickonitafilebrowserallowstheuserto browsethroughthelocalharddriveandchooseafile.2-Alternativelyyoucanhaveatextfieldwheretheuserinputsthefulladdressof thefileonthelocalharddrivesuchas:c:myfilestestfile.txtAfterchoosingthefileorenteringthefilesaddresstheuserclicksontheupload buttonandthefilewillbesenttotheserverandsavedontheserverslocaldrive.Download:Theuserwillprovidethefilenameinatextfieldandclickonthedownload button.Thefilenamecanbesomethinglike readme.txt.Arequestwiththefilenamewillbesenttotheserver.Ifthefileexistsontheserveritwillbetransferredtotheclientandsavedonthelocalharddriveof theclient.Ifthefiledoesnotexist ontheserveranerrormessage willbeinstead senttotheclient.TheclientGUIshouldsomehow(eitherthroughapopupwindoworinalabelonthesameGUI)showtheuseran appropriatemessagesayingthatThefilerequesteddoesnotexist.ServerSide:TheservercodedoesNOTneedtohaveaGUI.Itonlylistenstoaspecificportandwaitsfortheclientsmessage.Iftheclientsendsanuploadrequestitwillreceivethefileandsaveit alongwiththeotherfiles onthefileserver(alocaladdress).If itreceivesadownloadrequestitwillsendtherequestedfiletotheclientoranappropriatemessagetoinformtheclientthatthefiledoesnotexist.Detailsand options:The GUIfortheclientneedstohave: Achoosefile buttonorafile name textfieldin which theclientprovides theaddressfortheuploadfunction. Anupload buttonthatinitiatesthefile transferofthechosenfile totheserver. Afilename textfieldto provide thefilenametobedownloadedfromtheserver Adownload button that willsend thedownloadrequesttotheserver Alabeltoshowtheuserontheclientside the occurred errors suchas file notfound iftheuser entersa file nametobeuploadedthat doesnotexist the errormessage comingfromtheserverthat thefilerequesteddoesnt exist ortheservernot readymessage (ifyou decidetohandlethat)