/* bind address and port to socket */
if(bind(fd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)
{
perror("bind error");
return false;
}
能从绑定的端口收到数据,然会回射给客户端:
r = sendto(server_fd, dptr, len, 0, (struct sockaddr *)&(saddr), sizeof
(struct sockaddr));
返回值是是成功的,r=len,但是对方却收不到,禁用外网卡b后就可以了!用tcpdump看一下,发现只有客户端到服务器的,服务器发送出去的的没
有。实在不知道原因,我已经绑定ip了,udp应该能发送出去啊,再说就算发送到外网卡了,用tcpdump也应该能看到啊,请高人指点!
On 11月5日, 下午1时13分, 周龙亭 <njdragon...@gmail.com> wrote:
> 用于sendto的FD也bind到一个IP,port试试。
>
> 2009/11/5 ben <lizp....@gmail.com>
> > 有。实在不知道原因,我已经绑定ip了,udp应该能发送出去啊,再说就算发送到外网卡了,用tcpdump也应该能看到啊,请高人指点!- 隐藏被引用文字 -
>
> - 显示引用的文字 -
路由表什么样子的 ?
On 11月5日, 下午7时31分, Tomt <tomtfore...@gmail.com> wrote:
> 是不是路由的问题?
On 11月5日, 下午11时11分, xiang neou <gensheng...@gmail.com> wrote:
> 肯定是路由的问题。
> 2009/11/5 Mockey <mockey.c...@gmail.com>
>
>
>
>
>
> > 在服务器上抓所有网卡上的数据包,包括ICMP的,看看发送的数据是怎么流向的。
>
> > 路由表什么样子的 ?
>
> > On 11月5日, 下午7时31分, Tomt <tomtfore...@gmail.com> wrote:
> > > 是不是路由的问题?- 隐藏被引用文字 -
>
> - 显示引用的文字 -
2. 使用traceroute看看到你要发送的目的地址的路由信息:
traceroute targetip
如果路由不可达,ICMP会返回该类型的错误的。
应该是默认是走114.251.79.1网关,而绑定的是192.168.1.18ip上造成的。
增加:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1 dev eth0
其中udp发送是绑定在192.168.1.18上的,发送目的网段是10网段,设置该路由后就好了!
再次向朋友们表示感谢!
> > > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -