ﺑﻪ ﻧﺎم دوﺳﺖ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﯽ ﭘﻴﺸﺮﻓﺘﻪ ﻧﻴﻢ ﺳﺎل دوم ٨۴-٨٣ ﺕﻤﺮﻳﻦ ﭘﻨﺠﻢ اﺵﮑﺎﻻت و ﺳﻮاﻻت ﺧﻮد را ﺑﻪ Mailing listدرس ﺑﻔﺮﺳﺘﻴﺪ. ce_java@yahoogroups.com ﺑﺮای هﺮ ﻳﮏ از ﻣﺴﺎﺋﻞ زﻳﺮ ﻳﮏ ﺑﺮﻧﺎﻣﻪ ﺟﺎوا ﺑﻨﻮﻳﺴﻴﺪ ،ﮐﻪ اﺱﻢ ﮐﻼس اﺻﻠﯽ ﮐﻪ ﺣﺎوی ﻣﺘﺪ )main(String [] args ﻣﯽ ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﺑﺎ اﺱﻢ ﮐﻼس اﺻﻠﯽ ﮐﻪ در ﺻﻮرت ﻣﺴﺌﻠﻪ دادﻩ ﺷﺪﻩ اﺱﺖ .در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻣﻤﮑﻦ اﺱﺖ ﺕﺼﺤﻴﺢ ﺕﻤﺮﻳﻦ ﺷﻤﺎ دﭼﺎر ﻣﺸﮑﻞ ﺷﻮد) .ﺑﻪ ﺑﺰرﮔﯽ و ﮐﻮﭼﮑﯽ ﺣﺮوف ﺕﻮﺟﻪ ﮐﻨﻴﺪ(. ﺑﺮای ﺕﺤﻮﻳﻞ ﺕﻤﺮﻳﻦ ﺧﻮد ﻓﻘﻂ ﻓﺎﻳﻞ هﺎی *.javaﺕﻤﺮﻳﻦ ﺧﻮد را )ﺑﺪون ﻓﺎﻳﻠﻬﺎی *.classو fileﻳﺎ داﻳﺮﮐﺘﻮری اﺿﺎﻓﯽ( zipﮐﺮدﻩ ]از ﻓﺮﻣﺖ rarاﺳﺘﻔﺎدﻩ ﻧﮑﻨﻴﺪ[ ،ﮐﻪ ﻧﺎم ﺁن ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻴﺒﺎﺵﺪ: ﺑﻌﺪ از ” “HW-5ﺵﻤﺎرﻩ داﻧﺸﺠﻮﻳﯽ ﺧﻮد را وارد ﮐﺮدﻩ )ﺑﺪون اﻳﻨﮑﻪ از ﮐﺎراﮐﺘﺮ ﻓﺎﺻﻠﻪ ﺧﺎﻝﯽ اﺳﺘﻔﺎدﻩ ﮐﻨﻴﺪ( .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ] HW5-83182239.zip :از ﻓﺮﻣﺖ *.rarﻣﺎﻧﻨﺪ HW5-83182239.rarاﺱﺘﻔﺎدﻩ ﻧﮑﻨﻴﺪ[ و ﺱﭙﺲ ﺁن را ﺕﻮﺱﻂ ﻳﮏ emailﺑﺎ ﻣﺸﺨﺼﺎت زﻳﺮ ﺑﻪ ﺁدرس ﻣﺬﮐﻮر ارﺱﺎل ﮐﻨﻴﺪ. ce244@ce.sharif.edu HW5-83182239 HW5-83182239.zip Recipient: Subject: Body: Attachments: ﻓﻴﻠﺪ Subjectﻧﺎﻣﻪ ،درﺱﺖ ﻣﺎﻧﻨﺪ اﺱﻢ zipﻓﺎﻳﻞ attachﺷﺪﻩ ﻣﻴﺒﺎﺷﺪ .ﺑﺪﻳﻦ ﺻﻮرت ﮐﻪ ﺑﻌﺪ از ” “HW5-ﺷﻤﺎرﻩ داﻧﺸﭽﻮﻳﯽ ﺧﻮد را وارد ﮐﺮدﻩ )ﺑﺪون اﻳﻨﮑﻪ از ﮐﺎراﮐﺘﺮ ﻓﺎﺻﻠﻪ ﺧﺎﻝﯽ اﺱﺘﻔﺎدﻩ ﮐﻨﻴﺪ(. ﻧﮑﺎﺕﯽ ﮐﻪ در ارﺳﺎل ﺕﻤﺮﻳﻦ ﺑﺎﻳﺪ ﺣﺘﻤﺎ رﻋﺎﻳﺖ ﺵﻮﻧﺪ: .١ﺕﻤﺮﻳﻦ هﺎ ﺣﺘﻤﺎ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮرت ﮔﻔﺘﻪ ﺷﺪﻩ ارﺱﺎل ﮔﺮدﻧﺪ .در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﺕﺼﺤﻴﺢ ﻧﺨﻮاهﻨﺪ ﮔﺸﺖ ،و ﻧﻤﺮﻩ ﺁن را از دﺱﺖ ﻣﻴﺪهﻨﺪ. .٢ﺕﻮﺟﻪ ﮐﻨﻴﺪ ﮐﻪ ﺑﺪﻧﻪ mailﺷﻤﺎ ﺧﻮاﻧﺪﻩ ﻧﻤﻴﺸﻮد ،ﻝﺬا اﮔﺮ ﻗﺼﺪ ﺑﻴﺎن ﻣﻄﻠﺒﯽ را دارﻳﺪ ،ﻧﺎﻣﻪ ای ﺟﺪاﮔﺎﻧﻪ ای ارﺱﺎل ﮐﻨﻴﺪ ﮐﻪ subjectﺁن ﻣﺘﻔﺎوت ﺑﺎﺷﺪ. .٣ﺕﻮﺝﻪ ﻣﻬﻢ :در ﺻﻮرﺕﯽ ﮐﻪ ﮐﺴﯽ ﺕﻤﺮﻳﻦ ﺧﻮد را ﺑﻪ ﺝﺎی ﺁدرس mailدرس ﺑﻪ ﺁدرس mailing list درس ارﺳﺎل ﮐﻨﺪ .ﻧﻤﺮﻩ ﺁن ﺕﻤﺮﻳﻦ را از دﺳﺖ ﻣﯽ دهﺪ .و در ﺻﻮرت ﺕﮑﺮار ﻧﻤﺮﻩ ﻣﻨﻔﯽ ﺧﻮاهﺪ ﮔﺮﻓﺖ. ﻣﻬﻠﺖ ارﺳﺎل ﺕﻤﺮﻳﻦ ﺳﺮی ﭘﻨﺠﻢ ،ﺕﺎ ﺳﺎﻋﺖ ١٣:٣٠ﻇﻬﺮ روز ﭼﻬﺎرﺵﻨﺒﻪ ٨۴/٢/٢٨ﻣﯽ ﺑﺎﺵﺪ. از ﺕﻤﺮﻳﻦ هﺎﻳﯽ ﮐﻪ ﺑﻌﺪ از اﻳﻦ ﺕﺎرﻳﺦ و ﺱﺎﻋﺖ ﻓﺮﺱﺘﺎدﻩ ﺷﻮﻧﺪ ،ﺕﺼﺤﻴﺢ ﻧﺨﻮاهﻨﺪ ﺷﺪ. ﻣﺴﺌﻠﻪ ﻳﮏ WebServer.java : در اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺎﻳﺪ ﻳﮏ webserverﺑﻨﻮﻳﺴﻴﺪ ﮐﻪ ﺑﻪ ١٢٣۴۵ portﮔﻮش ﺑﺪهﺪ و ﺑﻪ requestهﺎی httpﺟﻮاب ﺑﺪهﺪ ،و ﻓﺎﻳﻞ هﺎی د رﺧﻮاﺱﺘﯽ ﮐﺎرﺑﺮ را در ﺻﻮرت وﺟﻮد ﺑﺮای او ارﺱﺎل ﮐﻨﺪ و درﺻﻮرت ﻋﺪم وﺟﻮد پﻴﻐﺎم ﺧﻄﺎی ﻣﻨﺎﺱﺒﯽ ﻃﺒﻖ پﺮوﺕﮑﻞ httpرا ﺑﻪ explorerﺱﻤﺖ ﮐﺎرﺑﺮ ارﺱﺎل ﻓﺮﻣﺎﻳﺪ. ﺑﺮای ﻣﺜﺎل ﮐﺎرﺑﺮ ﻳﮏ ﺻﻔﺤﻪ explorerﺑﺎز ﻣﯽ ﮐﻨﺪ وﺁدرﺱﻬﺎی زﻳﺮ را وارد ﻣﯽ ﮐﻨﺪ: http://localhost:12345/test.html http://localhost:12345/flower.gif ﺱﺮور ﺷﻤﺎ ﺑﺎﻳﺪ اﻳﻦ requestهﺎ را ﺑﮕﻴﺮد .و ﻓﺎﻳﻞ درﺧﻮاﺱﺘﯽ ﺁﻧﻬﺎ را در ﺻﻮرت وﺟﻮد ﺑﻪ ﮐﺎرﺑﺮ ارﺱﺎل ﮐﻨﺪ) . ﺱﺮور ﺷﻤﺎ ﺑﺎﻳﺪ ﻳﮏ داﻳﺮﮐﺘﻮری ﻓﺮﺿﯽ دﻝﺨﻮاﻩ ) (c:\webﺑﻪ ﻋﻨﻮان داﻳﺮﮐﺘﻮری defaultﺧﻮد ﺑﺮای ﺟﺴﺘﺠﻮ ﺑﺮای ﻓﺎﻳﻞ هﺎی درﺧﻮاﺱﺘﯽ در ﻧﻈﺮ ﺑﮕﻴﺮد( ﺑﺎﻳﺪ ﻳﺎدﺁوری ﮐﻨﻢ ﮐﻪ در پﺮوﺕﮑﻞ request ،httpهﺎ و responseهﺎ هﻤﻪ textﺱﺎدﻩ هﺴﺘﻨﺪ .ﮐﻪ ﺑﻪ راﺣﺘﯽ ﻣﯽ ﺕﻮان ﺧﻂ ﺑﻪ ﺧﻂ ﺁﻧﻬﺎ را ﺧﻮاﻧﺪ .ﺑﺮای اﻳﻨﮑﻪ ﺑﺘﻮاﻧﻴﺪ ﺑﻪ requestهﺎی httpﺟﻮاب ﺑﺪهﻴﺪ .ﮐﺎﻓﻴﺴﺖ ﮐﻪ از requestهﺎی httpﺕﻨﻬﺎ ﺧﻂ اول و در ﺻﻮرت ﻧﻴﺎز ﺑﻌﻀﯽ از headerهﺎی ﺁن را ﮐﻪ در ﺧﻄﻮط ﺑﻌﺪی هﺴﺘﻨﺪ را ﺑﺨﻮاﻧﻴﺪ .و ﺑﺮای responseهﺎ ﮐﺎﻓﻴﺴﺖ ﮐﻪ ﺧﻂ اول ﺁن ﮐﺪ ﺻﺤﻴﺢ را ﮔﺬاﺷﺘﻪ و در ﺧﻄﻮط ﺑﻌﺪی ﮐﻪ headerهﺎ هﺴﺘﻨﺪ ﺕﻨﻬﺎ ﺑﺮﺧﯽ از ﺁﻧﻬﺎ ﮐﻪ ﺿﺮوری هﺴﺘﻨﺪ ﻣﺎﻧﻨﺪ “ “Content-type:و ” “Content-lengthرا setﮐﺮدﻩ و در responseﻗﺮار دهﻴﺪ.ﻣﺎﺑﻘﯽ ﮐﺎر را ﺧﻮد browserاﻧﺠﺎم ﻣﻴﺪهﺪ و اﮔﺮ formatﺁن ﺻﺤﻴﺢ ﺑﻮد ،ﻣﺤﺘﻮای responseﺷﻤﺎ را ﺧﻮاﻧﺪﻩ و ﺁن را ﻧﻤﺎﻳﺶ ﻣﯽ دهﺪ. ﺁدرس serverﺷﻤﺎ هﻤﺎن ﺁدرس localﮐﺎﻣﭙﻴﻮﺕﺮ ﺷﻤﺎ اﺱﺖ .ﮐﻪ ﻋﺒﺎرت اﺱﺖ از . http://localhost/اﻣﺎ ﭼﻮن explorerهﻤﻮارﻩ requestهﺎی ﺧﻮد را ﺑﻪ port 80ﮐﺎﻣﭙﻴﻮﺕﺮ ﻣﯽ ﻓﺮﺱﺘﺪ و ﺑﻪ ﺁن ﮔﻮش ﻣﯽ دهﺪ ،ﺑﺮای اﻳﻨﮑﻪ ،explorerپﻴﻐﺎم هﺎی (http requests) httpﺧﻮد را ﺑﻪ ) port 12345هﻤﺎن portﻳﯽ ﮐﻪ ﺱﺮور ﺷﻤﺎ ﺑﻪ ﺁن ﮔﻮش ﻣﻴﺪهﺪ( ارﺱﺎل ﮐﻨﺪ ،ﺑﺎﻳﺪ ﺑﻨﻮﻳﺴﻴﺪ ) http://localhost:12345/ :ﺑﻌﺪ از ﺁدرس ﺱﺮور ،ﺑﻌﺪ از :ﺑﺎﻳﺪ port numberرا وارد ﮐﻨﻴﺪ ،ﺕﺎ requestﺷﻤﺎ ﺑﻪ portﺧﺎﺻﯽ از serverﻣﺮﺑﻮﻃﻪ ﻓﺮﺱﺘﺎدﻩ ﺷﻮد( ﻝﻴﺴﺖ ﺧﻄﺎهﺎﻳﯽ ﮐﻪ در httpوﺟﻮد دارد ﺑﻪ هﻤﺮاﻩ ﻳﮏ ﺱﺮی ﻣﻄﺎﻝﺐ دﻳﮕﺮ در power pointﻳﯽ در ﺱﺎﻳﺖ درس uploadﺷﺪﻩ اﺱﺖ. از ﺟﻤﻠﻪ typeهﺎﻳﯽ ﮐﻪ serverﺷﻤﺎ ﺑﺎﻳﺪ ﺁن هﺎ را ﺑﭙﺬﻳﺮد ) :ﺷﻤﺎ ﺑﺎﻳﺪ typeهﺎی ﺑﻴﺸﺘﺮی را پﻴﺪا ﮐﻨﻴﺪ ،ﺣﺪاﻗﻞ ۴ﻧﻮع دﻳﮕﺮ پﻴﺪا ﮐﻨﻴﺪ( ﻓﺎﻳﻞ ﻣﺘﻨﯽ html ﻓﺎﻳﻞ ﺕﺼﻮﻳﺮی gif ﻓﺎﻳﻞ ﺕﺼﻮﻳﺮی jpeg Content-type : text/html Content-type : image/gif Content-type : image/jpeg ﺕﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﮐﻪ اﮔﺮ ﻓﺎﻳﻞ درﺧﻮاﺱﺘﯽ ﮐﺎرﺑﺮ وﺟﻮد داﺷﺖ ﺑﺎﻳﺪ ﺁن را در اﻧﺘﻬﺎی responseﺑﻌﺪ از ﻗﺴﻤﺖ headerﻗﺮار دهﻴﺪ .ﺑﻴﻦ ﻗﺴﻤﺖ headerو dataﺑﺎﻳﺪ ﺣﺘﻤﺎ ﻣﺘﻦ " "\r\nرا در ﻣﺘﻦ responseوارد ﮐﻨﻴﺪ ﺕﺎ explorerﻣﺮز ﺑﻴﻦ headerو dataرا ﺕﺸﻴﺨﺺ دهﺪ. ﻧﻤﺮﻩ اﺿﺎﻓﯽ : پﺲ از ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ،ﺧﻮاهﻴﺪ دﻳﺪ ﮐﻪ ﺱﺮور ﺷﻤﺎ ﺕﻨﻬﺎ ﺑﻪ ﻳﮏ requestﺟﻮاب ﻣﯽ دهﺪ ،در ﺣﺎﻝﻴﮑﻪ ﺱﺮور ﺷﻤﺎ ﻣﻤﮑﻦ اﺱﺖ در ﻳﮏ whileهﻤﻴﺸﻪ trueﻗﺮار داﺷﺘﻪ ﺑﺎﺷﺪ!!!! ﭼﺮا ؟ ﺁﻳﺎ راﻩ ﺣﻠﯽ ﺑﻪ ﻧﻈﺮ ﺷﻤﺎ ﻣﯽ رﺱﺪ ؟ درﺱﺘﻪ اﺱﺘﻔﺎدﻩ از ،threadپﺲ اﻣﺘﺤﺎن ﮐﻨﻴﺪ. اﻣﺎ ﺑﺎز هﻢ اﮔﺮ ﺑﻪ درﺱﺘﯽ از threadاﺱﺘﻔﺎدﻩ ﻧﮑﻨﻴﺪ ،ﺱﺮور ﺷﻤﺎ ﺕﻨﻬﺎ ﺑﻪ ﻳﮏ requestپﺎﺱﺦ ﺧﻮاهﺪ داد. ﭼﺮا؟؟ ﺑﺮای اﻳﻦ ﻣﻮﺿﻮع راﻩ ﺣﻠﯽ پﻴﺪا ﮐﻨﻴﺪ و ﺑﺮﻧﺎﻣﻪ ﺧﻮد را ﻣﺒﺘﻨﯽ ﺑﺮ ﺁن ﺑﻨﻮﻳﺴﻴﺪ. ﻣﻮﻓﻖ و ﻣﻮﻳﺪ ﺑﺎﺷﻴﺪ. ﺧﺪاﻳﺎ! ﺁﺱﺎن ﺑﻮدن دﺷﻮار اﺱﺖ ﺁﺱﺎﻧﻢ ﮐﻦ. ﺁﻧﯽ ﻧﻴﺴﺘﻢ ﮐﻪ ﺑﺎﻳﺪ ﺁﻧﻢ ﮐﻦ.
© Copyright 2025 Paperzz