作者privatewind (伤神客)
看板IPv6
标题[问题] IPv6 Multicating 撰写
时间Wed Nov 18 10:58:30 2009
大家好,
小弟最近在写一只IPv6 Multicasting 的程式
於网路上,找到一只由 Richard Stevens 所撰写的范例程式
执行後却出现"Bind error: invalid argument"错误讯息,特来请教大家
平台: Ubuntu 8.04 LTS
网页:
http://www.kohala.com/start/unpv12e.html
下载:
http://www.kohala.com/start/unpv12e/unpv12e.tar.gz
编译好档案 :
http://www.megafileupload.com/en/file/156774/sendrecv.html
当我照着README步骤去MAKE成功後(有一个地方必须修改,因为Redefinition)
再去make ./mcast的程式 产生了sendrecv程式档
当我执行./sendrecv ff02::1 100 时
就出现了 "Bind error : invalid argument"
请问怎麽修改呢?
我目前推测是recvfd 的问题,但是不知道该如何修改,恳请赐教
程式码(main.c,篇幅问题,只贴main.c)
int
main(int argc, char **argv)
{
int sendfd, recvfd;
const int on = 1;
socklen_t salen;
struct sockaddr *sasend, *sarecv;
if (argc != 3)
err_quit("usage: sendrecv <IP-multicast-address> <port#>");
sendfd = Udp_client(argv[1], argv[2], (void **) &sasend, &salen);
recvfd = Socket(sasend->sa_family, SOCK_DGRAM, 0);
Setsockopt(recvfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
sarecv = Malloc(salen);
memcpy(sarecv, sasend, salen);
Bind(recvfd, sarecv, salen);
Mcast_join(recvfd, sasend, salen, NULL, 0);
Mcast_set_loop(sendfd, 0);
if (Fork() == 0)
recv_all(recvfd, salen); /* child -> receives */
send_all(sendfd, sasend, salen); /* parent -> sends */
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.107.174.109
1F:推 alextwl:这只范例只吃ipv4,所以把相关的function call改一下吧! 11/21 22:58