[问题]有关ubuntu下2个系统通信时出的问题

软件和网站开发以及相关技术探讨
回复
luchen
帖子: 52
注册时间: 2007-07-16 18:40
来自: 浙江

[问题]有关ubuntu下2个系统通信时出的问题

#1

帖子 luchen » 2007-10-15 10:45

我在VMware上通过2个ubuntu虚拟机进行通信
下面的是我用其中一个ubuntu对另一个进行通信,通过ping可知端口是通的,但就是发不了信息,希望哪位牛人能帮忙解决一下(2个ubuntu都启动了该程序)
下面是一个即时通信的程序
/*udp的
连接端 */
#include <sys/types.h>
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>

#define MAXLINE 80
#define SERV_PORT 80

void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen){
int n;
char sendline[MAXLINE], recvline[MAXLINE + 1];

/* connect to server */
if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1){
perror("connect error");
exit(1);
}

while(fgets(sendline, MAXLINE, fp) != NULL){
/* read a line and send to server */
write(sockfd, sendline, strlen(sendline));
/* receive data from server */
n = read(sockfd, recvline, MAXLINE);
if(n == -1){
perror("read error");
exit(1);
}
recvline[n] = 0; /* terminate string */
fputs(recvline, stdout);
}
}

int main(int argc, char **argv){
int sockfd;
struct sockaddr_in servaddr;
/* check args */
if(argc != 2){
printf("usage: udpclient <IPaddress>\n");
exit(1);
}
/* init servaddr */
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){
printf("[%s] is not a valid IPaddress\n", argv[1]);
exit(1);
}

sockfd = socket(AF_INET, SOCK_DGRAM, 0);
do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
return 0;
}
下面是运行结果
luchen@luchen-desktop:~/communi$ ./communication 169.254.3.202
hello
read error: Connection refused
luchen@luchen-desktop:~/communi$ ping 169.254.3.202
PING 169.254.3.202 (169.254.3.202) 56(84) bytes of data.
64 bytes from 169.254.3.202: icmp_seq=1 ttl=64 time=4.02 ms
64 bytes from 169.254.3.202: icmp_seq=2 ttl=64 time=0.759 ms
64 bytes from 169.254.3.202: icmp_seq=3 ttl=64 time=0.257 ms
64 bytes from 169.254.3.202: icmp_seq=4 ttl=64 time=0.341 ms
64 bytes from 169.254.3.202: icmp_seq=5 ttl=64 time=0.315 ms
64 bytes from 169.254.3.202: icmp_seq=6 ttl=64 time=0.322 ms
64 bytes from 169.254.3.202: icmp_seq=7 ttl=64 time=1.18 ms
回复