Меню сайта
Анонсы
mIRC скриптерам Опытным скриптерам
Категории
services [4]
help
о Mirc [16]
Другое [3]
Ircnet.ru [4]
сеть
IRC [11]
Мини-чат
Случайное фото
Роmaqpka
+++

К нам присоединилось:
Сегодня: 0
Вчера: 0
За последние 7 дней: 0
За последние 30 дней: 0
Отправить SMS и MMS
SMS
Beeline МТС Мегафон

ММС
Beeline МТС Мегафон
Главная » Статьи » Irc » о Mirc

сокеты в mIRC
Сокеты просты. Никогда не слушай никого, кто говорит обратное. Просто есть несколько базовых понятий, которые ты должен понять и намотать на ус. Думай о сокетах как о телефонных звонках. Компьютер А звонит (подключается, connects) компьютеру Б как показано ниже.

В жизни:  Комп А поднимает трубку и набирает номер 124.12.21.3 на телефон с номером 90 (ну мини АТС у них там стоит, зажрались буржуи - прим. перев.) 
В скриптах: /sockopen COMPB 124.12.21.3 90  
В жизни:  Комп Б отвечает и затем говорит комп А 
В скриптах: /sockwrite -n COMPB Привет! Классно, правда!  
В жизни:  Комп А вешает трубку 
В скриптах: /sockclose COMPB  


Это всё. Конечно, нужно пояснить, что здесь всё-таки происходит. Этот пример похож на глухого человека с телефоном, он не может слышать, а только говорит. 

Именно поэтому нам просто необходимо событие on *:sockread 

on *:SOCKREAD:COMPB:{ 
if ($sockerr > 0) return 
:nextread 
sockread %temp
if ($sockbr == 0) return 
if (%temp) echo -s %temp 
goto nextread 

А теперь, подключаясь через сокет к компьютеру который мы назвали COMPB, можно уже слышать, что же происходит. 

А теперь посмотрим, что же творится на ругом конце провода:

В жизни:  COMPB ждёт звонка телефона #90  
В скриптах: /socklisten ANYOLDNAME 90  
В жизни:  COMPB слышит звонок телефона и поднимает трубку 
В скриптах: On *:socklisten:ANYOLDNAME:{ 
echo -s Телефон звонит 
sockaccept $sockname COMPA 
sockwrite -n COMPA Привет! Это COMPB
В жизни:  COMPA говорит "Привет!", а затем любая сторона может повесить трубку 
В скриптах: on *:SOCKREAD:*:{ if ($sockerr > 0) return 
:nextread 
sockread %temp 
if ($sockbr == 0) return 
if (Привет! isin %temp) sockclose $sockname | echo -s Мы повесили трубку 
if (%temp) echo -s %temp 
goto nextread 
}  


Вот. Достаточно простой пример работы. А здесь более сложный пример (здесь приведены лишь основные события и алиасы, по которым можно понять работу с сокетами): 


alias opsim.host { 
socklisten Opsim.Host 90 
echo -s Wait on 90 
unset %das 
alias opsim.client { 
sockopen opsim.client $ip 90 
echo -s Connect to $ip 90 

on *:SOCKLISTEN:Opsim.Host:{ 
;Turn the counters on 
if (%das != $null) { inc %das } 
if (%das == $null) { set %das 1 } 
echo -s $sockname receiving 
sockaccept $sockname $+ %das
if (%das < 5) { sockwrite -n $sockname $+ %das 64167 
.timer 1 1 sockopen Client $+ %das $sock($sockname).ip 64167 } 
if (%das > 4) { sockwrite -n $sockname $+ %das Full 
sockclose Client $+ %das } 
sockclose Client $+ %das 
on *:SOCKLISTEN:Opsim.Game: { 
set %das1 $sockname $+ $time
echo -s Server connecting to %das1 
sockaccept %das1 
sockwrite -n %das1 info 
on *:SOCKREAD:*:{ 
if ($sockerr > 0) return 
:nextread 
sockread %temp 
if ($sockbr == 0) return 
if (64167 isin %temp) { 
socklisten Opsim.Game 64167 
opsim.init(1) 
opsim.join.msg 
goto nextread 
if (info isin %temp) { 
opsim.ssl.info $sockname 
if (%temp) opsim.sckrd %temp 
goto nextread 
alias opsim.ssl.info { 
sockwrite -n $1- Topic %opsim.topic 
sockwrite -n $1- Names $opsim.names(@#Opsim) 
on *:SOCKCLOSE:*:{ 
echo -s $sockname Lost 
if ($sockname == Client1) { 
if ($sock(Client2)) { .sockrename Client2 Client1 } 
if ($sock(Client3)) { .sockrename Client3 Client2 } 
if ($sock(Client4)) { .sockrename Client4 Client3 } 
if ($sockname == Client2) { 
if ($sock(Client3)) { .sockrename Client3 Client2 } 
if ($sock(Client4)) { .sockrename Client4 Client3 } 
if ($sockname == Client3) { 
if ($sock(Client4)) { .sockrename Client4 Client3 } 
if (Client isin $sockname) { dec %das } 
if (Opsim.Game isin $sockname) { echo 6*** Disconnected } 
on *:START:unset %das 
alias opsim.sckrd { 
if (txt isin $1) { 
set %temp.var(4) $2 
set %temp.var(3) $3- 
%opsim.spk.brackets 
if (jn isin $1) { 
opsim.script.join $2 
opsim.join.text $2- 
opsim.changeit 
if (prt isin $1) { 
opsim.part.text $2- 
dline -l @#Opsim $fline(@#Opsim,$2,1,1) 
opsim.changeit 
if (topic isin $1) { 
set %opsim.topic $2- 
opsim.changeit 
if (names isin $1) { 
opsim.add.ppl2chan $2- 
opsim.changeit 
alias echoed { 
;Game Types 0,1.. 0 = Single Player, 1 = 2+ Player 
if (%opsim.game.type == 0) { 
echo $1- 
if (%opsim.game.type == 1) { 
opsim.ssl.poke $2- 
alias opsim.ssl.poke { 
if ($sock(Client1)) { sockwrite -n Client1 $1- } 
if ($sock(Client2)) { sockwrite -n Client2 $1- } 
if ($sock(Client3)) { sockwrite -n Client3 $1- } 
if ($sock(Client4)) { sockwrite -n Client4 $1- } 

На этом, пожалуй, и закончим 

Категория: о Mirc | Добавил: [StingeR] (29 Января 11)
Просмотров: 1934 | Рейтинг: 0.0/0 |

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини инфо
гость
13:57:45
Группа: Гуси

Логин:
Пароль:
Поиск по сайту
:)

456
Код нашей кнопки:
Рекомендуем :)
Лучший mIRC клиент:)
Лучший mIRC БОТ:)
Френды :)
[CooLBots] EpicNet
Статистика
Каталог webplus.info Locations of visitors to this page
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Были на сайте сегодня:
Коментариев: 4524
Форум: 354/2694
Фоток: 1227
Новостей на сайте: 42
Файлов: 492
Статьи: 81
Гостевая книга: 25


Всево зарегено: 34796
Из них
Пользователей: 34476
Проверенные 311
Администраторы 5
Гл. Администраторы 3
Из них
Парней: 34608
Девушек: 170
Copyright MyCorp © 2024Хостинг от uCoz