Програмирање Питхон Соцкет-а - Пре него што започнем са програмирањем Питхон Соцкет-а, надам се да имате добре основе у питхон-у. Ако знате и Дјанго, било би још лакше разумети. Не, програмирање соцкет-а није повезано са Дјанго-ом, али терминологије у Питхон соцкет-програму и Дјанго-у су готово исте, иако су две различите категорије. За почетак, шта је тачно програмирање Питхон Соцкет-а? Програмирање Питхон Соцкет-а не постоји само у питхону, већ и у Јави и скоро свим осталим програмским језицима. Али у случају питона, програмирање соцкет-а је заправо врло лако разумети. Питхон Соцкет програмирање значи мрежно програмирање. То укључује клијентске стране и Питхон Соцкет сервере повезане кодове. Али та је дефиниција подједнако добра као што се књига која говори о програмирању Ц користи за развој софтвера. И не, нисам овде због тога. Овде сам да бих вам осигурао дубље разумевање основа програмирања соцкет Питхон-а пре него што заправо почнете да пишете сопствене модуле соцкет-а. Зато покренимо и погледајте како соцкет ради било на страни клијента или на страни сервера Питхон Соцкет.

Шта је Питхон Соцкет програмирање?

Ако сте научили програмирање Ц-а, тада би учење Питхон соцкет програма у Питхон-у било врло лако јер су скоро исти. Да би га поједноставили, програмирање утичница питхон-а само је комад кода како рачунари у мрежи међусобно комуницирају. А то се не завршава само мрежом заснованом на ЛАН-у, већ подржава и ВАН, МАН и интранет мреже. Чак користимо утичнице у свакодневном животу. Не схватајући? Дозволите ми да вам дам један једноставан пример. Када се желите повезати на рецимо Фацебоок.цом, једноставно упишите исту ствар у УРЛ траку. Дакле, ова веза коју сте управо створили није само створена ДНС стварима. Ово је све конфигурисано програмирањем соцкет питхон-а. Соцкетс одлучују како двије мреже комуницирају. Свака комуникација која пролази кроз мрежу, може бити видео, ВОИП везе или само текст; све пролази кроз утичницу. Сада када знамо шта су утичнице, дозволимо да развијемо сопствену утичницу у питхон-у.

Извор слике: пикабаи.цом

Врсте програмирања соцкет Питхон-а

Сад је вани мноштво утичница. Али нећемо разговарати о свима њима, јер овде не могу покрити свакога од њих. Можете или створити УДП утичницу, ТЦП утичницу или чак прикључак за прикључак и постоји још много тога ако наставим. Али данас бих се више позабавио ТЦП и УДП утичницама, јер су они основни а они могу бити изузетно добри као почетник за започињање програмирања Питхон Соцкет-а.

  • Програмирање УДП утичница

Усер Датаграм Протоцол или његов уобичајени назив УДП је алтернативни протокол ТЦП-у који преноси пакете са једног хоста на други. Али за разлику од ТЦП (протокол за контролу преноса), УДП је протокол без везе и оријентисан је на проток. То значи да ће УДП сервер хватати само долазне пакете из читавог домаћина без идентификације поуздане изворне везе. За то ћемо користити функцију соцкет.соцкет. Једноставна УДП утичница креирана је на Питхон на следећи начин:

увоз соцкет #импортинг соцкет модуле из питхон библиотеке # Сада морамо креирати АФ_ИНЕТ и соцк дграм соцкетсс = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_ДГРАМ) исписати „Соцкет Цреатион успјешно“

Да. То је то и створили смо једноставну УДП утичницу овде у питхону. Програмирање Питхон Соцкет-а или чак стварање једноставне утичнице није ракетна наука. Међутим, велика ствар лежи у кодирању УДП сервера и клијента. Пошто су УДП утичнице повезане, команде се покрећу функцијама слања и примања утичница. Ове функције не захтијевају да се међусобно повезу. Они заправо могу слати и примати пакете из било којег случајног извора. Ево како се ствара УДП Сервер:

импорт соцкетпорт = 2924с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_ДГРАМ) с.бинд (("", порт)) принт "Захтев за повезивање са портом на машини", порт

док је 1:

подаци, адреса = с.рецвфром (1024)

штампање података

Ово се можда не чини много, али тако је заправо створено. Овде се може користити било који порт. Управо сам изабрао случајни као 2924. УДП серверу је потребан порт за отварање за слање и примање долазних веза. Нема слушања порта или прихватања веза или захтева. То се једноставно дешава без аутентификације. Покушајте покренути горњи сервер на терминалу и погледајте како то функционише.

Ово је само једноставан УДП сервер који смо креирали. Хајде да то буде мало занимљивије и такође мало сложеније:

"" Ово је једноставан УДП соцкет сервер "" увоз соцкетимпорт сис

ХОСТ = “” # Овдје можете испробати све доступне интерфејсе

ПОРТ = 2924 # Било који случајни порт који се не користи подразумевано у Виндовс или Линук дистрос-у

# Кодирање УДП утичнице

покушати :

с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_ДГРАМ)

испис "Соцкет иницијализед" "

осим соцкет.еррор, мсг:

штампа „Није успело креирање соцкет-а. Дошло је до следеће грешке: ”+ стр (мсг (0)) +‘ порука ’+ мсг (1)

сис.екит ()

# Сада морамо да повежемо ову утичницу на горњи хост и порт

покушати:

с.бинд ((ХОСТ, ПОРТ))

осим соцкет.еррор, мсг:

штампа „Веза са прикључком није успела. Након грешке прекинута је веза: "+ стр (мсг (0)) + 'Порука' + мсг (1)

сис.екит ()

принт 'Довршено везивање утичнице'

# Одржавајте успостављену везу

док је 1:

# хватање података од клијента користећи променљиве податке и адресу

д = с.рецвфром (1024)

дата = д (0)

адреса = д (1)

ако не и подаци:

пауза

одговор = 'у реду …' + подаци

с.сендто (одговор, адреса)

исписати 'Токен мессаге (' + адреса (0) + ':' + стр (адреса (1)) + ') -' + дата.стрип ()

с.цлосе ()

Покрените горњи програм и покренућете УДП Сервер на прикључку 2924. Честитамо, успешно сте креирали Соцкет у Питхон-у. Обавезно приметите да УДП сервер може поднијети мноштво клијената за разлику од ТЦП сервера, а главни разлог је што нема фиксног повезивања на УДП серверу као у случају ТЦП сервера.

Препоручени курсеви

  • Течај сертификације у Руби Дебуггингу
  • ПХП МиСКЛ курс
  • ВБ.НЕТ течај за сертификацију програмирања
  • Комплетна обука за ИТИЛ фондацију
  • УДП програмирање клијента

Сада, када смо успешно створили УДП Сервер, потребан нам је клијент да успостави исправну везу са њим тако да знамо како функционише. Дакле, хајде да радимо на стварању одговарајућег УДП клијента у Питхон-у. Овај клијент ће се повезати са нашим УДП сервером који смо креирали горе:

"'Стварање једноставних УДП клијената усинд соцкет' 'увоз соцкетимпорт сис

# Стварање УДП утичнице

покушати:

с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_ДГРАМ)

осим соцкет.еррор:

принт 'Соцкет Цреатион фаилед'

сис.екит ()

хост = '127.0.0.1'; # Такође можете покушати да употребите локално домаћинство ове ИП адресе, оба су иста.

порт = 2924;

док (1):

мсг = рав_инпут ('Унесите поруку коју треба послати серверу:')

покушати :

# Сада морамо да поставимо жице

с.сендто (мсг, (хост, порт))

# Сада морамо да примимо податке и адресу клијента користећи податке и адресу

д = с.рецвфром (1024)

одговор = д (0)

адреса = д (1)

принт 'Одговор са сервера је:' + одговор

осим соцкет.еррор, мсг:

принт 'Након грешке која се појављује:' + стр (мсг (0)) + 'Порука' + мсг (1)

сис.екит ()

Аха. Стварање УДП клијента у Питхон Соцкет програмирању је много лакше него креирање УДП сервера. Али овако иде. Мислим да не бих требао ништа да објашњавам из горњег дела кода, јер сам све потребне ствари већ споменуо у коментарима # таг. Само се уверите да су ИП адреса и порт који сте унели исправни и да ваш фиревалл не блокира везу, у супротном ће увек резултирати неуспехом без обзира на све.

  • Програмирање ТЦП соцкет-а

Сада када смо научили како да креирате УДП клијент и Сервер, погледајмо програмирање ТЦП утичница. Овде ћемо користити исту функцију соцкет.соцкет за стварање ТЦП утичнице.

импорт соцкет # Увоз соцкет модула из библиотека питхон-а # креирајте АФ_ИНЕТ и стриминг соцкетсс = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ) штампајте „Соцкет Цреатион успјешно“

Овде се АФ_ИНЕТ користи за везу адресе Ипв4, а ток чарапа је протокол оријентисан ТЦП-ом. Ово је једноставна ТЦП утичница коју смо створили. Сада ћемо креирати напредну верзију исте ствари. Овде ћемо изузети и изузетке, на исти начин на који смо га бацили приликом креирања УДП сервера и клијената, тако да у случају да повезивање не успе, знаћемо где се налази стварни програм. Соцкет.еррор ће се користити за обраду свих ових грешака сличних оној у УДП програмирању.

Зато сада дозволимо да направите утичницу са горе описаном грешком и да се повежете на хост фацебоок.цом. Ово треба учинити:

импорт соцкет #импортинг соцкет модулеимпорт систри: с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ)

осим соцкет.еррор, мсг:

принт 'Стварање утичнице није успјело. Дошло је до следеће грешке: '+ стр (мсг (0)) +', порука о грешци: '+ мсг (1)

сис.екит ();

штампа 'Соцкет Цреатион успјешно'

хост = 'ввв.фацебоок.цом'

порт = 2924

покушати:

ремоте_ип = соцкет.гетхостбинаме (хост)

осим соцкет.гаиеррор:

принт 'Неправилно име хоста. Излаз … '

сис.екит ()

принт "+ хост + ИП адреса" је "+ ремоте_ип

с.цоннецт ((ремоте_ип, порт))

исписати "Соцкет Цоннецтед то" + хост + "он ип" + ремоте_ип

Сада је то довољно ако морамо само успоставити везу. Али то није наш циљ. Намеравамо да успоставимо везу где бисмо могли да шаљемо и добијамо податке на оба краја. Податке можемо послати користећи функцију сендалл. Дакле, ево како то иде:

импорт соцкет #импортинг соцкет модулеимпорт систри: с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ)

осим соцкет.еррор, мсг:

принт 'Стварање утичнице није успјело. Дошло је до следеће грешке: '+ стр (мсг (0)) +', порука о грешци: '+ мсг (1)

сис.екит ();

штампа 'Соцкет Цреатион успјешно'

хост = 'ввв.фацебоок.цом'

порт = 2924

покушати:

ремоте_ип = соцкет.гетхостбинаме (хост)

осим соцкет.гаиеррор:

принт 'Неправилно име хоста. Излаз … '

сис.екит ()

принт "+ хост + ИП адреса" је "+ ремоте_ип

с.цоннецт ((ремоте_ип, порт))

исписати "Соцкет Цоннецтед то" + хост + "он ип" + ремоте_ип

#трансферинг података помоћу сендалл функције

мессаге = "ГЕТ / ХТТП / 1.1 \ р \ н \ р \ н"

покушати :

с.сендалл (порука)

осим соцкет.еррор:

#Пошиљање није успјело

штампа 'Неуспех преноса'

сис.екит ()

принт 'Статус поруке: Послано'

Сада, када смо створили успешну везу и такође можемо да пошаљемо податке, погледајмо како бисмо уопште могли да добијемо податке. Ево како то иде:

импорт соцкет #импортинг соцкет модулеимпорт систри: с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ)

осим соцкет.еррор, мсг:

принт 'Стварање утичнице није успјело. Дошло је до следеће грешке: '+ стр (мсг (0)) +', порука о грешци: '+ мсг (1)

сис.екит ();

штампа 'Соцкет Цреатион успјешно'

хост = 'ввв.фацебоок.цом'

порт = 2924

покушати:

ремоте_ип = соцкет.гетхостбинаме (хост)

осим соцкет.гаиеррор:

принт 'Неправилно име хоста. Излаз … '

сис.екит ()

принт "+ хост + ИП адреса" је "+ ремоте_ип

с.цоннецт ((ремоте_ип, порт))

исписати "Соцкет Цоннецтед то" + хост + "он ип" + ремоте_ип

#трансферинг података помоћу сендалл функције

мессаге = "ГЕТ / ХТТП / 1.1 \ р \ н \ р \ н"

покушати :

с.сендалл (порука)

осим соцкет.еррор:

#Пошиљање није успјело

штампа 'Неуспех преноса'

сис.екит ()

принт 'Статус поруке: Послано'

#Сада како бисмо добили податке, користимо функцију рецв да би је постигли

одговор = с.рецв (4096)

штампај одговор

Коначна ствар је да морамо затворити утичницу да бисмо то могли учинити следећим кодом:

с.цлосе ()

И на крају, обавезујући део. Функцију бинд можемо користити за везање сокета са ип адресама и портовима.

импорт соцкетимпорт сисХОСТ = ”#Ово је исти начин као и УДП протоколПОРТ = 2924 # порт за приступ подацима.

с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ)

штампа 'Успешно стварање соцкет-а'

покушати:

с.бинд ((ХОСТ, ПОРТ))

осим соцкет.еррор, мсг:

принт 'Веза није успела. Након грешке која се догодила '+ стр (мсг (0)) +' Порука '+ мсг (1)

сис.екит ()

штампа 'Соцкет Биндинг успјешно'

Сада морамо слушати долазне за долазне везе ако нам треба сервер да се повежемо. То се може учинити помоћу следеће једноставне команде:

с.листен (10) штампај 'Слушатељ је почео'

И на крају, морамо створити утичницу да бисмо прихватили ове везе:

импорт соцкетимпорт сисХОСТ = ”ПОРТ = 2924

с = соцкет.соцкет (соцкет.АФ_ИНЕТ, соцкет.СОЦК_СТРЕАМ)

штампа 'Соцкет Цреатион успјешно'

покушати:

с.бинд ((ХОСТ, ПОРТ))

осим соцкет.еррор, мсг:

принт 'Веза није успела. Дошло је до следеће грешке '+ стр (мсг (0)) +' Порука '+ мсг (1)

сис.екит ()

штампа 'Успешно везивање утичнице'

(10)

принт 'Слушатељ је почео'

# Прихватање веза

цонн, аддр = с.аццепт ()

# Пружање информација о повезаним клијентима

исписати 'Веза успостављена с' + аддр (0) + ':' + стр (аддр (1))

Заправо има пуно више од тога. Такође можемо писати кодове за руковатеље и друге ствари. Али мислим да би то за сада било то. Обавезно проверите ове основе после којих су преостали делови само комад торте за научити.

Први извор слике: пикабаи.цом

Повезани чланци:-

Ево неколико чланака који ће вам помоћи да сазнате више детаља о програмирању Питхон Соцкет-а, зато само прођите кроз линк.

  1. 25 најневероватнијих питања и одговора на Питхон интервју
  2. Каријере у Питхон-у
  3. Које су предности и ограничења употребе Питхона?
  4. Важна разлика између Питхон-а и Руби Перформанце-а
  5. Увод у Соцкет програмирање у ПХП-у
  6. Соцкет Программинг у Јави | Метода класе утичнице

Категорија: