- 論壇徽章:
- 0
|
問題描述:
1,下面是一個(gè)linux socket程序,命名aaa.c已經(jīng)成功編譯。
2,程序測(cè)試經(jīng)過:虛擬機(jī)上一個(gè)linux系統(tǒng)(以ip區(qū)別之,ip1)運(yùn)行aaa,在另一系統(tǒng)終端輸入telnet ip1
3490,會(huì)收到“hello word”的信息。
3,現(xiàn)在的狀況:同一個(gè)系統(tǒng)開兩個(gè)終端,終端1,運(yùn)行aaa,終端2,輸入telnet ip 3490。終端2收到
“hello word”.
4,問題是:用兩個(gè)系統(tǒng)測(cè)試,ip2卻提示:no route to host.
5,說明:在運(yùn)行aaa的系統(tǒng)上,已經(jīng)安裝telnet服務(wù)器,并且遠(yuǎn)程telnet沒問題。
改變虛擬機(jī)網(wǎng)卡模式也測(cè)試過,不行。(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 編輯 ] |
|