免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10980 | 回复: 12
打印 上一主题 下一主题

linux socket通信“no route to host”?!万分感谢! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-16 18:17 |只看该作者 |倒序浏览
问题描述:
1,下面是一个linux socket程序,命名aaa.c已经成功编译。
2,程序测试经过:虚拟机上一个linux系统(以ip区别之,ip1)运行aaa,在另一系统终端输入telnet ip1
3490,会收到“hello word”的信息。
3,现在的状况:同一个系统开两个终端,终端1,运行aaa,终端2,输入telnet ip 3490。终端2收到
“hello word”.
4,问题是:用两个系统测试,ip2却提示:no route to host.
5,说明:在运行aaa的系统上,已经安装telnet服务器,并且远程telnet没问题。
改变虚拟机网卡模式也测试过,不行。(bridged--NAT)
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define MYPORT 3490
#define BACKLOG 10
main()
{
int sockfd, new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int sin_size;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  perror("socket");
  exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(MYPORT);
my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
bzero(&(my_addr.sin_zero),0);
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))== -1) {
  perror("bind");
  exit(1);
}
if (listen(sockfd, BACKLOG) == -1) {
  perror("listen");
  exit(1);
}
while(1) {
sin_size = sizeof(struct sockaddr_in);
if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr,&sin_size)) == -1) {
  perror("accept");
  continue;
}
printf("server: got connection from %s\n",inet_ntoa(their_addr.sin_addr));
if (!fork()) {
if (send(new_fd, "Hello, world!\n", 14, 0) == -1)
perror("send");
close(new_fd);
exit(0);
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG) > 0);
}
}

[ 本帖最后由 black_billow08 于 2008-9-23 09:32 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-09-18 08:07 |只看该作者

就没人愿意试试?

这么就怎么没人回个话。。。。

论坛徽章:
0
3 [报告]
发表于 2008-09-18 09:38 |只看该作者
问题描述不清,没看懂
首先:文章标题写的不清
其次:代码没有code格式化
最后:问题描述不清

论坛徽章:
0
4 [报告]
发表于 2008-09-22 20:08 |只看该作者

black_billow08 的帖子

这样写不知道我说清楚没有?有空的,帮忙测试解决一下,实在不知道什么原因,不胜感激!

论坛徽章:
0
5 [报告]
发表于 2008-09-24 11:14 |只看该作者
和程序没有关系,ip2的问题
看看ip2的网络设置和路由表,tcpdump


网络编成tcpdump 少不了

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2008-09-24 13:19 |只看该作者
先检查一下你的网络状况

论坛徽章:
0
7 [报告]
发表于 2008-09-24 14:24 |只看该作者

回复 #5 tentacle 的帖子

谢谢你的回帖!不过还没有解决
我按如下方法添加了路由:
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
两个系统的路由表都有这条,
然后:
ifconfig eth0 down
ifconfig eth0 promisc
ifconfig eth0 up
重启了网络
结果测试还是“no route to host”
我用tcpdump host ip2 -q
监听
网络不可达
我监听结果截图传上,大家帮我分析一下啊
谢谢

论坛徽章:
0
8 [报告]
发表于 2008-09-24 14:27 |只看该作者

回复 #6 Godbach 的帖子

ping是可以ping通的,
而且
ip2 telnet ip1也可以telnet上
网络状况现在看起来良好,难道还有其他的没注意到?

论坛徽章:
0
9 [报告]
发表于 2008-09-24 14:32 |只看该作者

现在我传上刚才的tcpdump的截图

现在我传上刚才的tcpdump的截图,大家帮忙看下,谢谢

telnet.JPG (42.58 KB, 下载次数: 43)

telnet.JPG

论坛徽章:
0
10 [报告]
发表于 2008-09-24 14:39 |只看该作者

是不是和我没有安装VVMWare Tools有关系?

我的虚拟机没有安装VMWare Tools ,不知道需不需要。。。。
谁可以帮忙测试一下?
万分感谢!这个小问题压了我好几天了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP