linux socket, 两台主机同时向对方发包

ROCK 2012-01-02 10:29:37
两台主机定时(也可以看做是同时)向对方发包,结果要么是两个主机一直发,都没有收。要么是一个主机发,一个主机收。
不知道是什么问题。就是没有我想要的有收,有发。请高手解答。
还有我一直怀疑是不是我发的包大小太小的问题,大约100B。请解答。谢谢
...全文
204 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanjingnew4 2012-01-06
  • 打赏
  • 举报
回复
你的socket是tcp还是udp?
ROCK 2012-01-03
  • 打赏
  • 举报
回复
木有人回答吗?
ROCK 2012-01-03
  • 打赏
  • 举报
回复
一个发,一个收是没有问题的。再开一个收进程。
我试试吧。刚学socket,也是刚学会select。
所以进程这块还得现学。谢谢你。但是搞不懂到底
用select问题出现在哪。呵呵……
zxl541221943 2012-01-03
  • 打赏
  • 举报
回复
先试试让select只收数据看看行不行,不行的话可能哪个地方出错了,如果可以你创建一个进程专门用于发数据来实现全双工。我记得我以前做网络编程时可以实现多台机子全双工通信的
ROCK 2012-01-02
  • 打赏
  • 举报
回复
(同时开始运行)首先,每个节点只知道邻接节点的IP地址,
然后就会先用60s和邻接节点建立socket。
然后每个节点向定时(每30s)向邻接节点发送
自己的ID(打包),然后其他节点收到这个ID
后,开始在AS内洪泛。
现在遇到的问题是发包可以,但是不知道为什么
收包就不行。select一直是0.
select只监控readfd。请高手解答。谢谢
ROCK 2012-01-02
  • 打赏
  • 举报
回复
while(1)
{
获取本地时间
ret=select(maxfd+1,readfds,null,null,time_out)
ret=-1
{
……
}
ret=0
{
在相同时间
发送数据包
}
ret>0
{
接收数据包
}
}
很多台主机同时运行,现在遇到的问题是主机一直发包,却不见收到数据包。不知道为什么。socket是全双工的,应该不会出现只能发不能收的问题。
我怀疑是不是因为很多主机同时发包,没办法收数据包。可是不确定。
希望大家能指点一下。因为程序太多了,没办法一一的贴上去。
我主要是想实现路由的洪泛。就是主机向AS内发送自己的ID。
qq120848369 2012-01-02
  • 打赏
  • 举报
回复
太抽象了... 具体点.

70,035

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧