ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ОписаниС Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«MessengerΒ»

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ — это любой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ описания процСсса, оформляСмый ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π¦Π΅Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²Π΅: Π±ΠΎΡ€ΡŒΠ±Π° со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π΅ΠΌ самым, скрывая Ρ‡Π°ΡΡ‚ΡŒ связСй Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ: ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ПБ это… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ОписаниС Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«MessengerΒ» (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1. Π’Π½Π΅ΡˆΠ½Π΅Π΅ описаниС
    • 1.1 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ
    • 1.2 БпСцификация качСства
  • 2. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅
    • 2.1 ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
    • 2.2 ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹
    • 2.3 ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ модуля Ρ„ΠΎΡ€ΠΌΡ‹ «About»
  • 3. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • 4. ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
    • 4.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ тСстирования ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°
    • 4.2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования
  • 5. АттСстация
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅
  • Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹
  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ запискС рассматриваСтся описаниС Windows-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Messenger».

Условия Π·Π°Π΄Π°Ρ‡ΠΈ: Π•ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠšΠ»ΠΈΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния сСрвСру, Π° ΡΠ΅Ρ€Π²Π΅Ρ€, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ эти сообщСния ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… Π½Π° Π΄ΠΈΡΠΊΠ΅.

Для выполнСния поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΡΠ΅Ρ‚Π΅Π²Ρ‹ΠΌ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP/IP.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ основного инструмСнта Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ примСняСтся Microsoft Visual Studio.NET. Π―Π·Ρ‹ΠΊ программирования C#.

1. Π’Π½Π΅ΡˆΠ½Π΅Π΅ описаниС

1.1 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ

ПБ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт собой Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ процСсса установки. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ графичСского ΠΎΠΊΠ½Π°. Π‘Π΅Ρ€Π²Π΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½, ΠΊΠ°ΠΊ консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ поля TextBox для Π²Π²ΠΎΠ΄Π° сообщСний ΠΈ IP адрСса сСрвСра. ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Button, сообщСниС пСрСдаСтся сСрвСру. Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСния ΠΈ ΡΠΎΡ…раняСт ΠΈΡ… Π½Π° Π΄ΠΈΡΠΊΠ΅.

Если сСрвСр Π½Π΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ΅Π½ ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΅Π³ΠΎ IP адрСс, ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

1.2 БпСцификация качСства

ПБ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ основным критСриям качСства:

Β· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся demo — вСрсиСй, пользованиС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠžΠ‘ Win32. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Udp — ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ windows прилоТСния сСрвСра, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ списка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° для Π΅Π³ΠΎ автоматичСского обновлСния, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ административных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ сСрвСру;

Β· Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠŸΠ‘ это Π΅Π³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π±Π΅Π·ΠΎΡ‚ΠΊΠ°Π·Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… условиях Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ большой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ. ΠŸΡ€ΠΈ этом ΠΏΠΎΠ΄ ΠΎΡ‚ΠΊΠ°Π·ΠΎΠΌ Π² ΠŸΠ‘ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ проявлСниС Π² Π½Π΅ΠΌ ошибки. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ тСстирования Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ситуации взаимодСйствия сСрвСра ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ВсС возникшиС Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ устранСны;

Β· ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ трСбования ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ, Π·Π°Ρ…Π²Π°Ρ‚ памяти ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½, трСбования ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ рСсурсам Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ для самой ΠžΠ‘ Win32;

Β· ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΡΡ‚ΡŒ:

o ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΡΡ‚ΡŒ: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятна своим интСрфСйсом, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСкоторыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сопровоТдСны надписями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Send — ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС, IPadressServera — ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° IP адрСса сСрвСра ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅;

o ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹, вслСдствиС простой структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

o ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ: ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π΄Π²Π° модуля: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ, прСдназначСнная для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний ΠΈ ΠΈΠ½Ρ„ормационная Ρ‡Π°ΡΡ‚ΡŒ, содСрТащая ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅. Π‘Π΅Ρ€Π²Π΅Ρ€ прСдставляСт собой консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Β· ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ: обСспСчиваСтся прямым пСрСносом исполняСмых Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ ΠžΠ‘ Win. Установка Π½Π΅ Ρ‚рСбуСтся. ΠšΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎΠ΄ Π»ΡŽΠ±Ρ‹ΠΌ ΠΊΠ»ΠΎΠ½ΠΎΠΌ Win32.

2. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

2.1 ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ — это любой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ описания процСсса, оформляСмый ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π¦Π΅Π»ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²Π΅: Π±ΠΎΡ€ΡŒΠ±Π° со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ спСциализированныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π΅ΠΌ самым, скрывая Ρ‡Π°ΡΡ‚ΡŒ связСй Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя. Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ:

Β· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° «frmMsg.cs», Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ;

Β· ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° «frmAbout.cs» («Πž ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅»);

Рисунок 1. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ НазначСниС модуля «frmMsg»:

Β· описаниС элСмСнтов интСрфСйса, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ TextBox — для Π²Π²ΠΎΠ΄Π° тСкста, MenuStrip, Button — для ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… дСйствий ΠΈ Ρ‚. ΠΏ.

Β· установка соСдинСния с ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠΌ ΠΏΠΎ ΡΡ€Π΅Π΄ΡΡ‚Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Tcp/IP ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Π΅ΠΌΡƒ сообщСний

Β· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° управлСния Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Π² Ρ‡Π°ΡΡ‚ности, ΠΌΠΎΠ΄ΡƒΠ»ΡŽ About

Β· запуск ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ прилоТСния

НазначСниС модуля «frmAbout»:

Β· Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅

2.2 ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

Главная Ρ„ΠΎΡ€ΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным.

Π‘ΠΎΠ»ΡŒΡˆΠ΅Π΅ пространство Ρ„ΠΎΡ€ΠΌΡ‹ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ TextBox (TxtMsg) — это тСкстовоС ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° сообщСний. Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ TextBox (txtIPserver) ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Π²ΠΎΠ΄Π° IP адрСса сСрвСра. Для наглядности Π΅Π³ΠΎ сопровоТдаСт Label — ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ надпись — «IPadressServera».

На Ρ„ΠΎΡ€ΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ МСнюMenuStrip. Оно состоит ΠΈΠ· Π΄Π²ΡƒΡ… Π³Π»Π°Π²Π½Ρ‹Ρ… ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ элСмСнта (File — Exit ΠΈ About). «Exit» — ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, «About» — для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅.

Π’Π°ΠΊΠΆΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ имССтся ΠΊΠ½ΠΎΠΏΠΊΠ° Button (cmdSend), прСдназначСнная для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний.

Рисунок 2. Π’ΠΈΠ΄ Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹

Рисунок 3. РСализация мСню

2.3 ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ модуля Ρ„ΠΎΡ€ΠΌΡ‹ «About»

ΠœΠΎΠ΄ΡƒΠ»ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ «About» содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅.

Рисунок 4. Π’ΠΈΠ΄ Ρ„ΠΎΡ€ΠΌΡ‹ «About»

3. ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚ΠΈΠΏΠ° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ — сСрвСр слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, основанный Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, создаваСмых с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сокСтов.

Π‘ΠΎΠΊΠ΅Ρ‚ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π΄Π²ΡƒΡ… процСссов, связанных ΠΌΠ΅ΠΆΠ΄Ρƒ собой Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ. Π‘ΠΎΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽ UDP ΠΈ TCP/IP. Данная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° осущСствляСт соСдинСниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€Π° ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP/IP.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСтСвой сСрвСр для ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, слСдуСт Π²Π½Π°Ρ‡Π°Π»Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ TcpListener, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΡƒΠΊΠ°Π·ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€Ρ‚Π° TCP/IP.

//создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для считывания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΡ€Ρ‚Π°

TcpListener tcpListener = new TcpListener (ipA [0], 8001);

//запускаСм ΠΏΠΎΡ€Ρ‚ Π½Π° ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΡƒ

tcpListener.Start ();

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅ΠΌ ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉΠ½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ соСдинСниС:

Socket socketForClient = tcpListener. AcceptSocket ();

Если соСдинСниС с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ установлСно,

if (socketForClient.Connected)

Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° networkStrem. BeginRead, класса NetworkStream для ΠΏΡ€ΠΈΠ΅ΠΌΠ° сообщСний:

networkStrem.BeginRead (

buffer, //ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

0, //смСщСниС

buffer .Length, //Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Ρ„Π΅Ρ€Π°

callbackRead, //Π΄Π΅Π»Π΅Π³Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

null); //Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ состояния

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° вСсьма прост. ΠšΠ»ΠΈΠ΅Π½Ρ‚ создаСт cΠΎΠΊΠ΅Ρ‚ tcpSocket для ΠΏΠΎΡ€Ρ‚Π°, ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ сСрвСром, ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса NetworkStream для это сокСта. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС Π² ΠΏΠΎΡ‚ΠΎΠΊ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ Π±ΡƒΡ„Π΅Ρ€:

System.IO.StreamWriter writer = new System.IO.StreamWriter (streamToServer);

writer.WriteLine (message);

writer.Flush ();

НаиболСС ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ вся Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ соСдинСния сСрвСра с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 5.

Рисунок 5. Π‘Π»ΠΎΠΊ схСма

4. ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

4.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ тСстирования ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ наглядно Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΡ†Π΅Π½ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ, доставки сообщСний Π΄ΠΎ ΡΠ΅Ρ€Π²Π΅Ρ€Π° ΠΈ Π·Π°ΠΏΠΈΡΡŒ ΠΈΡ… Π½Π° Π΄ΠΈΡΠΊΠ΅.

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ.

1. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π²Π²ΠΎΠ΄Π° IP адрСса сСрвСра ΠΈ Π½Π°ΠΆΠ°Ρ‚ия ΠΊΠ½ΠΎΠΏΠΊΠΈ Send.

2. Если IP адрСс Π½Π΅ Π·Π°Π΄Π°Π½ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½ Π½Π΅ Π²Π΅Ρ€Π½ΠΎ, Ρ‚ΠΎ Π² ΠΏΠΎΠ»Π΅ txtMsg ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ сообщСниС «Server not found…».

3. Π’Π°ΠΊΠΆΠ΅ сообщСниС «Server not found…» ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½Π΅Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠΌΡƒ сСрвСру.

Рисунок 6. Server not found

Доставка сообщСний Π΄ΠΎ ΡΠ΅Ρ€Π²Π΅Ρ€Π° ΠΈ Π·Π°ΠΏΠΈΡΡŒ ΠΈΡ… Π½Π° Π΄ΠΈΡΠΊ.

Доставка сообщСний Π΄ΠΎ ΡΠ΅Ρ€Π²Π΅Ρ€Π° осущСствляСтся ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ TCP/IP, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ доставки. На Π΄ΠΈΡΠΊ этих сообщСния Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ‚Скстовый Ρ„Π°ΠΉΠ» — logs. txt

Рисунок 7. Доставка сообщСний Π΄ΠΎ ΡΠ΅Ρ€Π²Π΅Ρ€Π°

Рисунок 8. Π—Π°ΠΏΠΈΡΡŒ сообщСний Π² Ρ‚Скстовый Ρ„Π°ΠΉΠ»

4.2 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования

На Π²ΡΠ΅ΠΌ протяТСнии создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ тСсты ΠΈ ΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±Ρ‹Π»ΠΎ выявлСно Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π΄Π²ΡƒΡ… случаях:

Β· ΠŸΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ тСкста, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π° сСрвСра, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ 256 byte, сСрвСр Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡΠΊΡ€Π°Π½ Ρ‡Π°ΡΡ‚ΡŒ тСкста, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ²ΡˆΠΈΠΉ сообщСниС подвисаСт.

Β· Если послС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, адрСс сСрвСра Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ, Ρ‚ΠΎ Π²Π½ΠΎΠ²ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΡΠ΅Ρ€Π²Π΅Ρ€Ρƒ Π±Π΅Π· Π²Π²ΠΎΠ΄Π° Π΅Π³ΠΎ IP адрСса Π² ΠΏΠΎΠ»Π΅ txtIPserver.

messenger сСтСвой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

5. АттСстация

По Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго процСсса изготовлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. НСкоррСктноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ исправлСно ΠΈ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ, Π½ΠΎ Π½Π΅ΡΠΌΠΎΡ‚ря Π½Π° ΡΡ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ тСстированиС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΌΠΎ-вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ всСм заявлСнным трСбованиям:

Β· ΠšΠ»ΠΈΠ΅Π½Ρ‚ отправляСт сообщСния сСрвСру

Β· Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Β· Π‘Π΅Ρ€Π²Π΅Ρ€ сохраняСт принятыС сообщСния Π½Π° Π΄ΠΈΡΠΊ

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ сСтСвой «messenger». И Ρ…ΠΎΡ‚Ρ, Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ использования Π΄Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΌΠΎ-вСрсии ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»Π°, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сСтСвого Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° TCP/IP.

Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности мСссСндТСра:

Β· ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сообщСний с ΡΠ΅Ρ€Π²Π΅Ρ€Π°

Β· ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ сообщСний ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ «Π²ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ»

Β· Windows ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сСрвСра

Β· Π Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Β· ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ списка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ

Β· АвтоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ списка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Β· АдминистративныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ мСссСндТСра

Β· Π£Π»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ интСрфСйс ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Β· АвтоотвСтчик ΠΈ ΠΌΠ΅Π½ΡŽ «Π˜Π½Ρ„ормация ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅»

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π² пСрСчислСнныС Π²Ρ‹ΡˆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, «messenger» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Ρ‚Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ использованиС Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях.

1. Π­. ВроСлсСн. Π‘# ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° .NET. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста. М. 2004

2. Π”. Π›ΠΈΠ±Π΅Ρ€Ρ‚ΠΈ. C#. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ .Net ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° c#. «Π‘ΠΈΠΌΠ²ΠΎΠ»-Плюс», БП 2003

3. A.Turtschi. C# .NET Web Developers Guide

4. E. Butow, T. Ryan C#. Your visual blueprint for building .Net aplications

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

SERVER

using System;

using System.Collections.Generic;

using System. Text;

using System.Net;

using System.Net.Sockets;

using System. Threading ;

using System. IO;

public class NetworkServer

{

class clientHandler

{

private byte[] buffer;

private Socket socket;

private NetworkStream networkStrem;

private AsyncCallback callbackRead;

public clientHandler (Socket socketForClient)

{

//ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса

socket = socketForClient;

//ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π±ΡƒΡ„Π΅Ρ€ для хранСния сообщСний

buffer = new byte[256];

//создаСм сСтСвой ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

networkStrem = new NetworkStream (socketForClient);

//ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния Ρ„Π°ΠΉΠ»Π°

callbackRead = new AsyncCallback (this.onReadComplete);

}

//Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ строки, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ

public void StartRead ()

{

//Ρ‡ΠΈΡ‚Π°Π΅ΠΌ ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ

networkStrem.BeginRead (

buffer, //ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

0, //смСщСниС

buffer .Length, //Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Ρ„Π΅Ρ€Π°

callbackRead, //Π΄Π΅Π»Π΅Π³Π°Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

null); //Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ состояния

}

//ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΎΠ±Ρ€Π°Ρ‚Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ², этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚

//строку Π½Π° ΡΠΊΡ€Π°Π½ ΠΈ ΠΎΡ‚сылаСт Π΅Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ

void record_results (string data, string outName)

{

FileStream fout = new FileStream (outName, FileMode. OpenOrCreate);

StreamReader sr = new StreamReader (fout);

string old = sr. ReadToEnd ();

sr.Close ();

fout.Close ();

data = old + data;

fout = new FileStream (outName, FileMode. OpenOrCreate, FileAccess. Write);

StreamWriter st = new StreamWriter (fout);

st.Write (data);

st.Close ();

fout.Close ();

}

private void onReadComplete (IAsyncResult ar)

{

int temp = networkStrem. EndRead (ar);

//Ссли ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° строка

if (temp > 0)

{

//ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ строку Π² ΠΈΠΌΡ Ρ„Π°ΠΉΠ»Π°

string s = System.Text.Encoding.ASCII.GetString (buffer, 0, temp);

//Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° ΡΠΊΡ€Π°Π½

Console.WriteLine («say client: {0}», s);

string result ="==>" + s;

record_results (result, «C:/temp/LOGS.txt»);

}

else

{

Console.WriteLine («Read connection dropped»);

networkStrem.Close ();

socket.Close ();

networkStrem = null;

socket = null;

}

}

}

static void Main (string[] args)

{

NetworkServer server = new NetworkServer ();

server.Run ();

}

private void Run ()

{

string host = Dns. GetHostName ();

IPHostEntry ipE = Dns. GetHostEntry (host);

IPAddress[] ipA = ipE. AddressList;

for (int i = 0; i < ipA. Length; i++)

{

Console.WriteLine (ipA[i]. ToString ());

}

//создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для считывания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с ΠΏΠΎΡ€Ρ‚Π°

TcpListener tcpListener = new TcpListener (ipA [0], 8001);

//запускаСм ΠΏΠΎΡ€Ρ‚ Π½Π° ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΡƒ

tcpListener.Start ();

//ΡΠ»ΡƒΡˆΠ°Π΅ΠΌ ΠΏΠΎΡ€Ρ‚

for (; ;)

{

//ΠΏΠΎ запросу ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° устанавливаСм соСдинСниС

//ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ сокСт ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ

Socket socketForClient = tcpListener. AcceptSocket ();

//Ссли соСдинСниС с ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ установлСно

if (socketForClient.Connected)

{

Console.WriteLine («Client connected»);

clientHandler handler = new clientHandler (socketForClient);

//Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΏΡ€ΠΈΠ΅ΠΌΠ° сообщСний

handler.StartRead ();

}

}

}

}

CLIENT

using System;

using System.Collections.Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Text;

using System.Windows.Forms;

using System.Net;

using System.Net.Sockets;

namespace msg_Server

{

public partial class frmMsg: Form

{

public frmMsg ()

{

InitializeComponent ();

}

private void aboutToolStripMenuItem_Click (object sender, EventArgs e)

{

frmAbout about = new frmAbout ();

about.ShowDialog (this);

}

private void exitToolStripMenuItem_Click (object sender, EventArgs e)

{

this.Close ();

}

private NetworkStream streamToServer;

private void button1_Click (object sender, EventArgs e)

{

try

{

string serverName = txtIPserver. Text;

TcpClient tcpSocket = new TcpClient (serverName, 8001);

streamToServer = tcpSocket. GetStream ();

string message;

message = txtMSG. Text;

//создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ StreamWriter ΠΈ Ρ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

//отправляСм строку Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€

System.IO.StreamWriter writer = new System.IO.StreamWriter (streamToServer);

writer.WriteLine (message);

writer.Flush ();

streamToServer.Close ();

}

catch { txtMSG. Text = «server not found…»; }

}

}

}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ