Compare commits

..

No commits in common. 'master' and '1.7.1' have entirely different histories.

@ -1,7 +1,4 @@
# Projet Répartition : Téléchargement FTP P2P
## Documentation
The report asked can be found in [doc/report.pdf](doc/report.pdf).
## Protocol
Documentation of the protocol used can be found in [doc/protocol.md](doc/protocol.md).
@ -17,10 +14,9 @@ Documentation of the protocol used can be found in [doc/protocol.md](doc/protoco
### Application CLI (Client+Server)
- Interactive mode: `java clientP2P.ClientP2P`
- CLI Arguments mode: `java clientP2P.ClientP2P -- <clientTransportProtocol> <integratedServerHOSTNAME> <integratedServerPORT> <trackerHOSTNAME> <trackerPORT>` (default tracker port 6969 (range 7000 -> 7999) and server port: server 7070 (range 7000->7070))
- CLI Arguments mode when using with a nat: `java clientP2P.ClientP2P -- <clientTransportProtocol> <integratedServerPublicHOSTNAME> <integratedServerPublicPORT> <trackerHOSTNAME> <trackerPORT> <serverBindingHOSTNAME> <serverBindingPORT>` (default tracker port 6969 (range 7000 -> 7999) and server port: server 7070 (range 7000->7070))
### Application GUI (Client+Server)
- `java gui.Gui`
- `java gui.ClientP2PGUI`
## Sujet
Lien vers le [document original](https://stri-online.net/FTLV/mod/resource/view.php?id=1753).

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 43 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.7 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 594 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 184 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 102 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 84 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 288 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 137 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 61 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 116 KiB

@ -1 +0,0 @@
<mxfile host="app.diagrams.net" modified="2020-04-14T20:21:49.648Z" agent="5.0 (X11)" etag="T4xjJPgOwcg8meu_05yP" version="12.9.12" type="device"><diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">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</diagram></mxfile>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Binary file not shown.

@ -1 +1 @@
<mxfile host="Electron" modified="2020-04-14T15:11:32.653Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.9.9 Chrome/80.0.3987.163 Electron/8.2.1 Safari/537.36" etag="4cQkucbfenyZyzuZQdJm" version="12.9.9" type="device"><diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">7Ztbc6s2EIB/jWdOH5IBBL48Jo6Tnulpm8TpaadvMsi2JjJyhZxLf31XRmCQbOxDcIKnyYNHLGKFtB+rXUnpoOHi5Ubg5fxXHhHW8ZzopYOuOp438LvwqwSvqaCLBqlgJmiUityNYEz/JVroaOmKRiQpVZScM0mXZWHI45iEsiTDQvDncrUpZ+VWl3hGLME4xMyW/kkjOddS13E2N34mdDbXTfcDfWOCw8eZ4KtYt9fx0HT9l95e4EyXrp/MccSfCyI06qCh4FympcXLkDA1tNmwpc9d77ibv7cgsTzkgd4ET7Ab+pPQ6039iXPmpRqeMFvpsXgQ0Cci9PvK12yM4NWXqrhasG90ShiN4epySQRdEAn10RXT4tuN7PJ5TiUZL3GoHn0GeEA2lwsGVy4UwaASwyMiv2YMLxM6WbfqgESQcCUS+kTuSZJyo6R8JVVLw5yHdVVlBxJpVflQO2u9CxrqMsMTwi5zww0546r5mK87lEjBH3MKlKIpvOM1XlCm4P5ORIRjrMWaZBfseIkZncVwEYIp1l23baPN9USEJC8FkbbVDeEwbOIVqmR3M85ey9/LcwHSjNF5gc+gr4VYfxizXPUGDihoPg5kBVmsDBmFzrmfrLSAFeS2iZW+xcqYCOjMJyttYOVDUen9ES/EX/SXv8fy6p/r1agbLbZMQ/ejm6/jh9H9l58sYgp2Vl2mMI9f6EGacCn5Am6QOLpQgYGSMR4+Vo2bxGJGZPUESaJSBGGPbGHsslEShGEJhJXDlS1Dp7XdcgpvlhupWzbSwBj7hK9ESPQzxSnfUOP61XrS3lt61mbM+1ffsr5l2W9gV5Dcj+5qWTaBF5aZbTnozWTXlGUPb7H+uor+rvq1aej/OA3dZmjwHOObRTV5MLmyFO0AAgYUvxaqLVWFZPcLu4Pt7Wz4SjU2Sluwm7bx7ZcpZQQGfqhSBCh69VzLhwJ4qDvSRnDOXb9nOfeGkDRB6tX1UN4eRTuI3CjKKvLpNCFHcWMDC6yrr+Ph799H9xlcSRbfKLzSC694gdpJW2qkatoqiUQf5hKR4RLzOOZHAUTdPYoaconmF5O1e1SXmPXFCsU9i8fPUPz9Q3Hf9KIfHou7rgXMG4Pxk5gxm/dPgdtMBB/0PjSCd+3k7JRC+Cqf2IY4vi4VVvj1zlj0LCo6XpfBqF9G9AmKM1UsBUl3yn2kVaDFQq1WQlQZGKFWOx4rnvFqMuZ7exQ1FBghZARGjlP5XvkSy/b6Rwqk7PVvM7n0NsnlKYT7Va6xrWibS5d1k07U26OoIbR9ox0vqEYb+ZX1j4T2/3OVTg/5mXPuoK5WfARkjU08v7Y3dvcoasE6iWuvwKXZJrIw+sw23z/bDIyJswXZZtcCpuXZ5v4pNDipKTSbYd48hVqKGppCA/MUhPceU6K9g31KU2IVl23IeusyZ2W9BzLXGBb2RkDFDtPJJgGfHqzZJMAM6nt78ttBZf3jeLwsmjwsv23p5mnlqk3/AKoP3c7KN1gdB6GyS7Jjqoa4N1NWMyg72Ik6g/OgWlVThwCMBaRsSXznVnC/sn4ZfPvpch+Ol+XkgfeO7eA7+FrCOSXiFL+Slq9tGr4/Xy95q++3FDW16WusbQbvsaDjeRagvwEqYNU5gd9wfW4XCo+xOjufHVFwVbfiKL9GKgvET0S7fKDuAoqQBMeMY1UtxDH8TsiMxucW6Fl+H3NJ9ifuOhd3/S3fheTLQj7MyFRtGiSgisazB3Xv6qzbUH5ctlXXsX15kM3NxfzYPEPV3MFIe9H5gIMnpxB3nthZE3Ptre7xO3N911pZaWpLxUA5w7am24HLzX+ppNU3/wmERv8B</diagram></mxfile>
<mxfile host="app.diagrams.net" modified="2020-03-19T14:50:01.302Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" etag="dOXguTcOAZ-R9XuIfENW" version="12.8.8" type="device"><diagram name="Page-1" id="13e1069c-82ec-6db2-03f1-153e76fe0fe0">7Vtfc+I2EP80zFwfkrEt28BjQkh60+tdEtJrp2/CFqBGWFSI/LlP3xWWDZbAEJ8hZpo8MNJqvZJ2f1rtSkoL9aYvNwLPJr/zmLCW58QvLXTV8rxO2IFfRXhNCX63mxLGgsYpyV0RBvQH0URHUxc0JvMCo+ScSTorEiOeJCSSBRoWgj8X2UacFXud4TGxCIMIM5v6J43lRFNdx1k1/EroeKK77gS6YYijx7Hgi0T31/LQaPmXNk9xJkvzzyc45s9rJNRvoZ7gXKal6UuPMKXaTG3pd9dbWvNxC5LIfT5oD/EQu5E/jLz2yB86Z14q4QmzhdbFg4A5EaHHK18zHcHQZ6q4mLIvdEQYTaB2OSOCTokEfnTFNPl2Rbt8nlBJBjMcqU+fATxAm8gpg5oLRTCoxPCJyOuM4dmcDpe9OkARJFqIOX0i92Se4kZR+UKqnno5Hpasyg4k1qJyVTtLuVMa6TLDQ8Iuc8P1OOOq+4QvJzSXgj/mKFCCRjDGazylTIH7OxExTrAmayS7YMdLzOg4gUoEplhO3baNNtcTEZK8rJG0rW4IB7WJV2DRrZ6vcaPXVUdXn9dAmmF0sobPIGPEemGMc9ErcEBB42NPrCALKz1GYXLuB1YagBXfaRJW2hZWWuji2/AfZYEPtLw/Wrphk9DSsdAyIAIm8+FZmoAVt1GexQ8tsHzlkmxFSqIad0JAW9X1oaw0QyE4vNC6lHy2pllGRlJ9AKJoMn5QbVdnYcHwztENX79DQHsaGQU12Lj9RzIVf9Hf/h7Iq3+vF/0wnm6ITO/7N58HD/37T79Yxl6zpGm9IZeST6GBJPGFyhUUjfHosWxxSCzGRG5BoB4ZiQtJha3ZNdVlK0EQhiW4kUJnm1Snpd1yCiNbrcSgaCQ3NFbYnC9ERPRX63mAISg37zZBqQIsQUtL5lOsblzfMu4XMC1Q7vt3lYw7hwHLzLwc5Ga0a8qyjzcAYMmil1GnMiA6bwdEWA8gvG7Rjp5TERAo2CFoCyBAofh1jW2mGOYlA+5s7meFr1RirWgLtqNtcPtpRBkBxffUwQEUvWre5V0BuK9H0kZwzl2/bbn3miBp+qg8h32zj3J3CNoCyZWgjJGPRnNyED/WtZB19XnQ+/a9f5+ha54FsgpfacVbr6Bmwi01UjncSiGJ3s0nItMnmmHovgD0TSSbgmryiabv9dERfGK2uKycy7Pw+JFzHT/nCoL3zLk2Asa1APOTAflJbJn1+6fQqSmID8P3DeKzvPNEo/gyr9iEUL4qLKxQ/siw2HD064VMnZnE9AmKY1UshEl3yoGkLNDjGlcjQVQaGqFGux4roulWxFhgxuamoJpCI98r9oPaTum4svYt/AcKpeyLMTO/9Fb55SkE/GWusanQNnbVymmnH+4QVBO0A/PA1by6N8eFSvkPBO3/50GdVvmZc+6gUAs+AGSN232/sjd2dghqwEmJax/CpfkmsmD0kW8eP98MjY2zAfmmfc/X8Hxz9xYanNQWmu0wP72FWoJq2kJDw4G63WNsifZjhVPaEstw2YSstyrmrKx3T8zVBgv7KqDkkulkk4APD1ZvEmAG9f6O/LZTyn8Yj5fNfb/8tqH3p6WnNp09UL3vhVZ+x+o4CBW3JzumquvO1cxZg4q497rd86BcVF0PAYwTpCyQ3Dqydil/Efm2gopzOFyak0feW26E72C5RBNKxCkuk4YfbppZsFuT87cE1XXvaxxuhsc40fE8C6BfASpg1QmB32j5oh8Kj4n6r5rslYKrppXEeR2pNBA/Ee3zAXUXUIQsOGEcK7YIJ/A7JGOanFtAP/rTzK1wf8MjWMP/hBsy5MyAhQy5bYCnvgeS9rHzHo9PTiHyPK33JqbfCaq+wTNPeMMDbb3muWN2j1zR70B19Q9sKfvqnwRR/z8=</diagram></mxfile>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 29 KiB

@ -1 +0,0 @@
<mxfile host="Electron" modified="2020-04-15T12:28:01.042Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/12.9.9 Chrome/80.0.3987.163 Electron/8.2.1 Safari/537.36" etag="rd-03VK3YZivAI2uokKE" version="12.9.9" type="device"><diagram id="jCZ_pu6ezyKGmVCC1v1x" name="Page-1">7V3dcps4FH4aT6/SAWR+fJk4abrddqfbtNv0khjFVoORB0Ri9+lXAmGQRGxiG0RidyYNkoUMn74jnT8pAzCeL69jfzH7ggMYDiwjWA7A5cCyLNcA9BerWeU1pmc5ec00RgGvKytu0B/IKw1em6IAJkJDgnFI0EKsnOAoghMi1PlxjJ/EZvc4FL914U+hUnEz8UO19icKyCyv9Sy3rP8I0XRWfLPpjPJP5n7RmL9JMvMD/FSpAlcDMI4xJvnVfDmGIUOvwCW/78Mzn64fLIYRaXLDcvHxYfrgmBdfHPvPl7+Ny4sfZ2eWl3fz6Icpf+MfBIUo8QlMY/7gZFWgQd9hwS7TeXg+ITgegItHGBNE8frs38HwK04QQTiiTe4wIXhOG4Tsgwt/8jCNcRoFYxyy+2hv4D77V+njPERTdi/BC1o7I/OQFkx6iVMSogiO14Ns0EoVAI4J6w4uK1UckGuI55DEK9qkICgfmzU7efmpHGrAq2aVUXZ4nc/JNV13XOJPL/gQvGA4wFAZDmUMMhRhwEF4miECbxb+hH36RIVQBO4AGJmWLYBkqRh5bg1Ipum2BpOtwHSzSshgDAbn3hwqkNE3JSIuPmfahOIC4xoKzlEQsNsvYpigP/5d1hUDfIFRRLIXsi8G9iXrKyWU9tnE1R3kTg3iVmt4Oz2kpS1iNKyhZa3s2q2h5CoonS8WIWVVNiW+elJuB7xuGmiNlMXjVCCFAV27eRHHZIanOPLDq7L2QmRp2eYzZktOBtVvSMiKKyIMRXGM4BKR28r1L9bVe5uXLpe856ywKgoRfd/baqFyFyuWt2Wl4r7AT2bZs2ZfFgXnTJ9h/Aj9JEGTvPIDCrdKVYLTeMIxGidL458Pt/b1018/kz9Xj/+M59MzLs7Ej6eQbMKcr08M6I2ciWFIWf8oKlF1FMhupS/mryoNOJ3Lnr+yipKKwJTmR8+W6JT3WJJr/Wi788058a1zvjn95FuxPh+Kb5swqqwm3zMFZxTmvyYzhp6qo9OuqXEEu1mEXQkYV10UzGHNqnAI1bAWNVWBPr+/R5MZA8oIqSVJbUBaRDBONCMHxNXU1I1cjU79DkYxnKKExBl8fspkNqamnHbaieDZXYJXvzC6p8Vhh8WhFsvCzdO9MrIXBQoWl/JzFT3ilXZREWdoUGNLdisqhYPsJCr7iwpoqkf1Qo2yC99vseY5ksdSbu/s1942DImtLZgFQBH7b5CpG7nKoVHygee8lyx27ctkA/dmrbxUBXlHodxlApAF+SC2z7ChzIKGMlsZTLtmLIu6l4m2IluWIbrKPdmvk783v2uDkK4fiHfkymTLgVE6OpS8qmpuVV7ZiNL/IzzXKruOISq4oEu7atMKshk2uCT0neucnd2CJ017hedGG3jFvCuihyNqWKUohvSTNCoN016B16lFXw+eqlg/4wgx7kI8edC86Hp9g89S4Psvxy1G9yh3i7xjc21WN40Rv6L1wbve0NKzekdLVfFTEeqRLiOqL4Jm8+z4HMyPW8hwT5QZYIpSau+qzABH7GjYsTJjOirnOrCld6XtdlN4by29EZc3cnQ7mY2GZN6TpWe2JbIU7MhS05MUopHdiKUvtu8lsbIMe+NzbWnfjr1efOdJZA4gMkZTkbG6ERlXmtfl6bixkSppwbbZjsS4npzos1litrRvSWLevMO2gZQdSGKaOmztbuRlrUYXfgZ5ZWgsMKYUkfNaWmJkFzLY4hKWXvDF7bsQMKBnSeICVgpVIxGjha8wRvSdWYqaLD4RjqAgOxsTdbeKS5GevN1ZevAIx36pgHzKFIxDx58zwzgkGSTVEoomYRrAdeVUaMJLEkNeW/ogKHSAda41nzGqCZtd5g8OVafcsY+RLXtZavLhux0j1fd37GPkDmU50j1GqoNx0xhlMYLgTQ8RMEaiElG3ZaLTIarzVR63GNmSwgq0i1FdbPzIx0janlXkc+gbIzV4PEcJi99BFiiZ+JMZKwQsTzJmuz6UIdAZM1l7z/UFkYEKyNvyJHSX+jXkFs9W02h4cF/CfjKkZhKwSHgaEr5Nqi/i4xhuz8THrtOGJYS634YnouTWzdEAqCgpobKDwVR0fJpl9p9l1nvut80yVj9STIGcXeZt9vfJ7T17JPGvBX+fq4rtiaBtE9RtmoLQb4KOhh04pD3zRNDOCVpYMq+coKYBDsvQ8Bqi20/R7Of4V/Tt/lMCz76Rs+MiaBfTYzsRx87ZZ5odzI+WqohfCTsl04j5AfwNpz90ugfME13G7lB3QrSlOrvuKZUjxMALKYwMvl7s0wVSxkUPsNNzDsGbTGBqbt60cxBBzXwmhg7cXRMyXEfsaNhSBhOQ9pdKE3ZL86/qQyqnD/2eI3nO8Ar26PMcWQpg35/Zx//aggSmLQZy6hxQnR6WZavBtpssKpDvq0jEMxWCvp6p4NTg2HG04OTHO5gVWpyVsD1a0K9EKltVFGnHVHbYl9Gf3zjNVEbYk4lfSmjXHzKoO7nvuKPKciLaenXQFVW21TNYj36MJLO+7tSSTsfIOSWibcvO0C5HjqrkHnkimjt0ezZE6nL+b0rvU7xlRoCSBU7W2TR92IMsr+4j3Yu7c1rct6VemoapmfHqocBHPilZ0hYbbzjSPEQv07+OYIiAlBzr6l43XFX9qjMDs+Mq+mAGyidvjbSfvOW+LL34CEguz0MjoEZ2uiW5ml1cCYoxmhMfZbqSVm5LW4SMmsT5jqn9ss12R0ht0zQ0c7v4sue5XUR9g+yM5ooxoDv+K8/lpqHdM17E80+Mf5bxhtUa42mx/KtNeUiz/ONX4Op/</diagram></mxfile>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 46 KiB

@ -0,0 +1 @@
<mxfile host="www.draw.io" modified="2019-12-12T10:16:53.052Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Safari/605.1.15" etag="9ujBaeT0R9HPyrINtYEh" version="12.3.9" type="device" pages="1"><diagram id="jCZ_pu6ezyKGmVCC1v1x" name="Page-1">7VjJkpswEP0aH5NiMV6OGbwkVZO5+DCTo8p0QClBu0Tb4Pn6SKYxEDKTpeIYV83FpX4tCek9qR9m5IdpudZil3zGCNTIc6Jy5C9Gnjf3PfNrgWMFTMazCoi1jCrIbYCNfAYGHUb3MoK805EQFcldF9xilsGWOpjQGotut6+ouk/diRh6wGYrVB99lBElFTrzpg3+EWSc1E92J/Mqk4q6M+8kT0SERQvylyM/1IhUtdIyBGW5q3mpxq1eyJ4XpiGj3xkQ5qXzsHoK1sWnx/x5eXgI0/gdq3MQas8bXmCRKRQRL5qONRNmNkO6Ce6KRBJsdmJrM4WR3WAJpcpErmn2F8ZrPYAmKFsQL3QNmALpo+nCWc/xqyF8anzmsGgkcMeMJS36p4wJVj0+z9wQYxrMzR/wNO7xdC9zsgdKKnM8h8SV612brKBHFsGJLCgNaZAZLoZE2LnWXI0w1+8TEpkyxCFqSjDGTKhlg95p3GcR2GkdEzV97hF3TNY3IDpyTRV7wi6VRg16arW/2KneBxwtSp75FBzrIDP7fWoHrVE2bIadomZc9MFWYxNmmEGFrKSl6ZR/UdYc93oLr3HHopDQMdCvS50l9tVTokEJkodu/f/3ko/fJL+45ONhSR68SX5xyYNhSe70rDBU0u7+x5PQ1fnyJlj72/mlIeh7oPcTD5xczAMn17wdzt/cDncwt6P+Z3RjHji9HcmvLt3AvGx2O9Ld7G0dmJfVHtN42Qa0cZyre5k//39mZsLmk80p1/ru5S+/Aw==</diagram></mxfile>

@ -64,7 +64,7 @@ public class ClientDownloadUDP extends ClientDownload {
* @param hostItem Hostitem of the server
*/
protected ClientDownloadPart createDownloadPart(HostItem hostItem) {
return (ClientDownloadPart)new ClientDownloadPartUDP((ClientDownload)this, filename, hostItem.getUDPSocket(), partsSubdir, logger, client, hostItem);
return (ClientDownloadPart)new ClientDownloadPartUDP((ClientDownload)this, filename, hostItem.getUDPSocket(), partsSubdir, logger, client, tracker);
}
/** Implementation of writeLog

@ -29,7 +29,6 @@ public class ClientP2P {
private Directories directories;
private HostItem tracker;
private HostItem server;
private HostItem serverBinding;
private Scanner scanner;
final static boolean DEBUG = false;
@ -47,17 +46,14 @@ public class ClientP2P {
}
/** Constructor.
* @param hostnameServer hostname used to register
* @param portServer port used to register
* @param hostnameServerBinding hostname to bind
* @param portServerBinding port to bind
* @param hostnameServer hostname to bind
* @param portServer port to bind
* @param hostnameTracker hostname of tracker
* @param portTracker port of tracker
*/
public ClientP2P(String hostnameServer, int portServer, String hostnameServerBinding, int portServerBinding, String hostnameTracker, int portTracker) {
public ClientP2P(String hostnameServer, int portServer, String hostnameTracker, int portTracker) {
scanner = new Scanner(System.in);
server = new HostItem(hostnameServer, portServer);
serverBinding = new HostItem(hostnameServerBinding, portServerBinding);
tracker = new HostItem(hostnameTracker, portTracker);
initDirectoriesAndLoggers();
System.out.println("Server will listen on port " + portServer + " and serve files from " + directories.getDataHomeDirectory());
@ -76,12 +72,6 @@ public class ClientP2P {
"<clientTransportProtocol> " +
"<integratedServerHOSTNAME> <integratedServerPORT> " +
"<trackerHOSTNAME> <trackerPORT> ");
System.out.println("or");
System.out.println("\tjava clientP2P.ClientP2P -- " +
"<clientTransportProtocol> " +
"<integratedServerPublicHOSTNAME> <integratedServerPublicPORT> " +
"<trackerHOSTNAME> <trackerPORT> " +
"<integratedServerBindingHOSTNAME> <integratedServerBindingPORT>");
System.out.println("(" + trackerPortRange + " and " + serverPortRange +")");
}
@ -92,8 +82,6 @@ public class ClientP2P {
*/
public static void main(String [] args) {
final String defaultHostname = "localhost";
String hostnameServBind = "";
int portServBind = 0;
String hostnameServer = "";
int portServer = 0;
String hostnameTracker = "";
@ -103,25 +91,16 @@ public class ClientP2P {
final ServerPortRange serverPortRange = new ServerPortRange();
final TrackerPortRange trackerPortRange = new TrackerPortRange();
if ((args.length != 6) && (args.length != 0) && (args.length != 8)) {
if ((args.length != 6) && (args.length != 0)) {
ClientP2P.printUsage(serverPortRange, trackerPortRange);
System.exit(1);
} else if (args.length == 6) {
protocolClient = args[1];
hostnameServer = args[2];
portServer = Integer.valueOf(Integer.parseInt(args[3]));
hostnameTracker = args[4];
portTracker = Integer.valueOf(Integer.parseInt(args[5]));
hostnameServBind = hostnameServer;
portServBind = portServer;
} else if (args.length == 8) {
protocolClient = args[1];
hostnameServer = args[2];
portServer = Integer.valueOf(Integer.parseInt(args[3]));
hostnameTracker = args[4];
portTracker = Integer.valueOf(Integer.parseInt(args[5]));
hostnameServBind = args[6];
portServBind = Integer.valueOf(Integer.parseInt(args[7]));
}
else if (args.length == 6) {
protocolClient = args[1];
hostnameServer = args[2];
portServer = Integer.valueOf(Integer.parseInt(args[3]));
hostnameTracker = args[4];
portTracker = Integer.valueOf(Integer.parseInt(args[5]));
} else {
System.out.println("Client, wich transport protocol do you want to use (default = TCP): ");
protocolClient = scanner.nextLine();
@ -153,22 +132,19 @@ public class ClientP2P {
} else {
portTracker = Integer.valueOf(Integer.parseInt(portTrackerStr));
}
hostnameServBind = hostnameServer;
portServBind = portServer;
}
boolean serverInRange = serverPortRange.isPortInRange(portServer);
boolean serverBindInRange = serverPortRange.isPortInRange(portServBind);
boolean trackerInRange = trackerPortRange.isPortInRange(portTracker);
if (serverInRange && trackerInRange & serverBindInRange) {
if (serverInRange && trackerInRange) {
System.out.println("using hostname : " + hostnameServer);
System.out.println("using port : " + portServer);
System.out.println("tracker hostname : " + hostnameTracker);
System.out.println("tracker port : " + portTracker);
ClientP2P c = new ClientP2P(hostnameServer, portServer, hostnameServBind, portServBind, hostnameTracker, portTracker);
ServerManagementUDP smudp = new ServerManagementUDP(c.directories.getDataHomeDirectory(), c.serverBinding, c.server, c.tracker, c.loggerServer);
ServerManagementTCP smtcp = new ServerManagementTCP(c.directories.getDataHomeDirectory(), c.serverBinding, c.server, c.tracker, c.loggerServer);
ClientP2P c = new ClientP2P(hostnameServer, portServer, hostnameTracker, portTracker);
ServerManagementUDP smudp = new ServerManagementUDP(c.directories.getDataHomeDirectory(), c.server, c.tracker, c.loggerServer);
ServerManagementTCP smtcp = new ServerManagementTCP(c.directories.getDataHomeDirectory(), c.server, c.tracker, c.loggerServer);
Thread tudp = new Thread(smudp);
tudp.setName("server UDP P2P-JAVA-PROJECT");
tudp.start();
@ -217,9 +193,6 @@ public class ClientP2P {
if (!trackerInRange) {
System.err.println("TRACKER: Port not in range. " + trackerPortRange);
}
if (!serverBindInRange) {
System.err.println("SERVER-BINDING: Port not in range. " + serverPortRange);
}
System.exit(2);
}
}

@ -45,29 +45,20 @@ public abstract class ServerManagement extends ServeErrors implements Runnable {
protected Logger logger;
protected String baseDirectory;
protected HostItem server;
protected HostItem serverBinding;
protected HostItem tracker;
protected Random punisher = new Random();
protected RatioWatcher ratioWatcher;
/** Constructor
* @param baseDirectory the root directory where files are stored
* @param serverBinding ther server will bind on this hostItem
* @param server the server hostItem used to register on tracker
* @param logger Logger item
* @param tracker Tracker
*/
public ServerManagement(String baseDirectory, HostItem serverBinding, HostItem server, HostItem tracker, Logger logger) {
/** Constructor */
public ServerManagement(String baseDirectory, HostItem server, HostItem tracker, Logger logger) {
super();
assert baseDirectory != null : "baseDirectory is null";
assert serverBinding != null : "serverBinding is null";
assert server != null : "server is null";
assert tracker != null : "tracker is null";
assert logger != null : "logger is null";
stop = false;
this.baseDirectory = baseDirectory;
this.server = server;
this.serverBinding = serverBinding;
this.tracker = tracker;
this.logger = logger;
}

@ -47,37 +47,26 @@ import serverP2P.FileWatcherTCP;
* @version 1.0
*/
public class ServerManagementTCP extends ServerManagement {
private ServerSocket socket;
/** Constructor for TCP implementation.
* @param baseDirectory the root directory where files are stored
* @param serverBinding ther server will bind on this hostItem
* @param server the server hostItem used to register on tracker
* @param logger Logger item
* @param tracker Tracker
*/
public ServerManagementTCP(String baseDirectory, HostItem serverBinding, HostItem server, HostItem tracker, Logger logger) {
super(baseDirectory, serverBinding, server, tracker, logger);
initSocket();
}
private ServerSocket socket;
/** Constructor for TCP implementation.
/** Constructor for TCP implementation, with baseDirectory and TCPPort parameters.
* @param baseDirectory the root directory where files are stored
* @param server the server hostItem used to register on tracker
* @param hostName the server will bind on this address
* @param TCPPort the server will listen on this port
* @param logger Logger item
* @param tracker Tracker
*/
public ServerManagementTCP(String baseDirectory, HostItem server, HostItem tracker, Logger logger) {
super(baseDirectory, server, server, tracker, logger);
initSocket();
}
/** Initialize socket */
private void initSocket() {
super(baseDirectory, server, tracker, logger);
assert baseDirectory != null : "baseDirectory is null";
assert server != null : "server is null";
assert tracker != null : "tracker is null";
assert logger != null : "logger is null";
try {
socket = new ServerSocket(serverBinding.getPort(), 10, serverBinding.getInetAddress());
socket = new ServerSocket(server.getPort(), 10, server.getInetAddress());
} catch (SocketException e) {
writeLog("Error: cannot listen on " + serverBinding, LogLevel.Error);
writeLog("Error: cannot listen on " + server, LogLevel.Error);
System.exit(-1);
} catch (IOException e) {
writeLog("Error: cannot openning socket", LogLevel.Error);

@ -47,35 +47,23 @@ public class ServerManagementUDP extends ServerManagement {
private DatagramSocket socket;
/** Constructor for UDP implementation.
/** Constructor for UDP implementation, with baseDirectory and UDPPort parameters.
* @param baseDirectory the root directory where files are stored
* @param server the server hostItem used to register on tracker
* @param hostName the server will bind on this address
* @param port the server will listen on this port
* @param logger Logger item
* @param tracker Tracker
*/
public ServerManagementUDP(String baseDirectory, HostItem server, HostItem tracker, Logger logger) {
super(baseDirectory, server, server, tracker, logger);
initSocket();
}
/** Constructor for UDP implementation.
* @param baseDirectory the root directory where files are stored
* @param serverBinding ther server will bind on this hostItem
* @param server the server hostItem used to register on tracker
* @param logger Logger item
* @param tracker Tracker
*/
public ServerManagementUDP(String baseDirectory, HostItem serverBinding, HostItem server, HostItem tracker, Logger logger) {
super(baseDirectory, serverBinding, server, tracker, logger);
initSocket();
}
/** Initialize socket */
private void initSocket() {
super(baseDirectory, server, tracker, logger);
assert baseDirectory != null : "baseDirectory is null";
assert server != null : "server is null";
assert tracker != null : "tracker is null";
assert logger != null : "logger is null";
try {
socket = new DatagramSocket(serverBinding.getPort(), serverBinding.getInetAddress());
socket = new DatagramSocket(server.getPort(), server.getInetAddress());
} catch (SocketException e) {
logger.writeUDP("Error: cannot listen on " + serverBinding, LogLevel.Error);
logger.writeUDP("Error: cannot listen on " + server, LogLevel.Error);
System.exit(-1);
}
}

@ -259,11 +259,7 @@ public abstract class TrackerManagement extends ServeErrors implements Runnable
while(readLock.get() > 0) {
this.wait();
}
if (!ratioDown.containsKey(updateRatioClient)) {
writeLog("Unkwnow client host " + updateRatioClient, LogLevel.Debug);
sendUnknownHost(pd);
} else if (!ratioUp.containsKey(updateRatioServer)) {
writeLog("Unkwnow server host " + updateRatioServer, LogLevel.Debug);
if (!ratioDown.containsKey(updateRatioClient) || ! ratioUp.containsKey(updateRatioServer)) {
sendUnknownHost(pd);
} else {
ratioDown.put(updateRatioClient, Long.valueOf(ratioDown.get(updateRatioClient).longValue() + ratioSize));

Loading…
Cancel
Save