Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Прием Broadcast сообщений |

22.02.2008, 23:46
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
Прием Broadcast сообщений
Как организовать прием udp датаграм по средствам бродкаста?
Последний раз редактировалось n4n0bit; 22.02.2008 в 23:49..
|
|
|

23.02.2008, 00:28
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
наныч.. ты словарики к своим постам прикладывай.. )))
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|

23.02.2008, 03:04
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
=) ну бля я хочу ethernet чат написать, типа как виндовый vypress, так вот я посылаю месадж на INADDR_BROADCAST с партом таким то и там мне черти ответить должны=)
андарстэнд? ну может я плохо выразился в силу моих скромных знаниях об TCP/IP
ps: я только что вышел из сетевога маркетинга - жуткое говно, поэтому буду знания подтягивать - компы это рулез=)
Последний раз редактировалось n4n0bit; 23.02.2008 в 03:07..
|
|
|

23.02.2008, 03:18
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Ip_onesbcast
|
|
|

23.02.2008, 04:22
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
Isis
IP_ONESBCAST не имеет мой perl, да и в socket.h там нет. У стивенсана прочел что этот пораметр сокета который позволяет установить ядром широковещательный адрес равный 255.255.255.255, но я его и так устанавливаю.
|
|
|

23.02.2008, 13:10
|
|
Познающий
Регистрация: 11.09.2006
Сообщений: 59
Провел на форуме: 70702
Репутация:
52
|
|
Разобрался, все бонально просто, но есть еще пару вопросов.
Этот скрипт рассылает пакеты - работает
Код:
#!/usr/bin/perl
use strict;
use warnings;
use Socket;
$| = 1;
# BroadCast messager
# Default params
my $PORT = 9191;
my $ADDR = '10.17.23.255';
socket(UDP, PF_INET, SOCK_DGRAM, getprotobyname('udp')) or die "socket() failed: $@";
setsockopt(UDP, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt() failed: $@";
my $dest = sockaddr_in($PORT,inet_aton($ADDR));
my $buff = undef;
for(my $i = 1; $i <= 9; $i++) {
send(UDP, "NumPacket_$i", 0, $dest) or die "send() failed: $@";
}
Этот скрипт принимает бродкаст
Код:
#!/usr/bin/perl
use strict;
use warnings;
use IO::Socket::INET;
$|++;
print "Listening on UDP port: 9191\n";
my $socket = IO::Socket::INET -> new (
LocalPort => 9191,
Broadcast => 1,
Proto => 'udp',
Blocking => 1
)
or die "Failed to bind to socket: $@";
my $mess;
while ($socket -> recv ($mess, 1024)) { print "Msg: $mess\n" }
Этот скрипт должен принимать бродкаст но он этого не делает, чем он отличается 2 скрипта?
Код:
#!/usr/bin/perl
use strict;
use warnings;
use Socket;
# server
socket(SOCK, PF_INET, SOCK_DGRAM, getprotobyname('udp')) or die "socket: $!";
setsockopt(SOCK, SOL_SOCKET, SO_BROADCAST, 1) or die "setsockopt() failed: $@";
bind(SOCK, sockaddr_in(9191, 10.17.23.32)) or die "bind: $!";
my $hisaddr = recv(SOCK, my $buff, 1024, 0);
print "[+] $hisaddr and say: $buff\n";
еще поврос, вот в 1м скрипте адрес назначения упаковывается inet_aton() а если эту упаковку делать с udp сервером, то вылазит еррор, выходит что для udp это не надо - токуа вот почему так?
Bad arg length for Socket: ack_sockaddr_in, length is 0, should be 4 at /usr/local/lib/perl5/5.8.8/mach/Socket.pm line 373.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|