Използване на Winsock Control
Този текст е безплатен превод от MSDN и демонстрира мрежовите възможности на компонента Winsock.
Нещо беше добавено и една грешка от пробата на MSDN беше коригирана, поради което прехвърлянето беше само в една посока.
Използване на компонента Winsock
Компонентът WinSock ви позволява да се свържете с отдалечена машина и да обменяте данни с нея, използвайки UDP (User Datagram Protocol) или TCP (Transmission Control Protocol). И двата протокола могат да се използват за създаване на клиент-сървърни приложения. Подобно на контрола на таймера, контролът WinSock е невидим по време на изпълнение на програмата.
Как се използва?
- създайте клиентско приложение, което ще събира информация, преди да я изпрати на централен сървър;
- създайте сървърно приложение, което ще действа като събирач и пазител на информация от различни клиентски приложения;
Избор на протокол.
Когато планирате да използвате WinSock, трябва да решите кой протокол ще се използва - TCP или UDP. Основната разлика между тях се крие в начина на организиране на комуникацията:
Връзката, базирана на UDP протокол, е подобна на предаването на глас, съобщението се предава от един компютър на друг, но не е ясно дали те могат да се чуят. Освен това максималният размер на предадените данни се задава от мрежата.
Възможностите на приложението, което създавате, ще зависят от избрания от вас протокол. Ето няколко въпроса, които могат да ви помогнат да изберете подходящия протокол: Ще изисква ли приложението известие от сървъра или клиента, когато данните се изпращат или получават?
Ако е така, тогава протоколът TCP изисква установена връзка между предавателя и получателя на данни.
Дали предадените данни ще бъдат достатъчно тежки (като изображения или звукови файлове)? Ако е установена връзка, протоколът TCP ще я поддържа и целостта на предадените данни е гарантирана. Такава връзка поради необходимостта от повече изчислителни ресурси може да я направи по-бавна.
Данните ще се прехвърлят ли на парчета или в една сесия? Например, ако създадете приложение, което информира някои компютри, че някои задачи вече са изпълнени, UDP протоколът е по-подходящ. UDP също е по-подходящ за прехвърляне на малки количества данни.
Настройка на протокола.
За да зададете протокола, който приложението ви ще използва, трябва да изберете свойството Protocol по време на проектиране в прозореца на свойствата и да го зададете на sckTCPProtocol или sckUDPProtocol. Това може да се направи и програмно:
Намиране на името на компютъра.
Основи на TCP връзка.
Когато създавате приложение, което използва протокола TCP, първото нещо, което трябва да решите, е дали вашето приложение ще бъде клиент или сървър. Ако създадете сървърно приложение, то ще прослушва на посочения порт. Когато клиентското приложение направи заявка за връзка, сървърното приложение може да приеме заявката и по този начин да установи връзката. Ако връзката е установена, клиентското приложение и сървърното приложение могат свободно да обменят данни.
Следващите стъпки ще ви позволят да създадете елементарно сървърно приложение:
За да създадете TCP сървър
- Създайте нов стандартен проект EXE.
- Променете името на формуляра по подразбиране на frmServer.
- В свойството на надписа на формуляра въведете "TCP сървър"
- В менюто Project \ Components добавете Microsoft Winsock Conrol 6.0
- Плъзнете иконата на компонента Winsock от лентата с инструменти и я поставете във формуляра; променете името на компонента на tcpServer.
Добавете два елемента Textbox към формуляра. В свойството Name на първото текстово поле въведете txtSendData и второто txtOutput.
Добавете следния код към формуляра:
Описаните по-горе стъпки ще доведат до просто сървърно приложение. Но за да завършите задачата напълно, трябва да създадете и клиентско приложение.
За да създадете TCP клиентско приложение
Добавете нов формуляр към проекта и го наречете frmClient. И променете свойството на надписа на формуляра на "TCP клиент".
Плъзнете и пуснете компонента Winsock върху формуляра и променете неговото свойство на име на "tcpClient".
- Добавете две контроли за текстово поле към формуляра frmClient.
- Името на първото е зададено txtSend, а второто е txtOutput.
- Плъзнете CommandButton върху формуляра и задайте свойството му име "cmdConnect".
- Променете свойството на надписа на този бутон на „Свързване“.