请教:SOCKET编程问题
小弟最近在学习《UNIX网络编程》这本书,但是遇到点问题
我现在在一个虚拟机上搞了两套系统,一个是SUSE(192.168.42.128),一个是REDHAT(192.168.42.129),这两个系统可以PING通。现在写了一程序在REDHAT上运行,通过TCP协议去访问SUSE的daytime服务。代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MAXLINE 4096
#define SA struct sockaddr
int
main(int argc, char **argv)
{
int sockfd, n;
char recvline[MAXLINE+1];
struct sockaddr_in servaddr;
if(argc != 2)
{
printf("usage:a.out<IPaddress>\n");
exit(1);
}
if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("socket error\n");
exit(1);
}
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(13);
if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
{
printf("inte_pton error for %s\n", argv[1]);
exit(1);
}
if(connect(sockfd, (SA *)&servaddr, sizeof(servaddr)) < 0)
{
printf("connect error\n");
exit(1);
}
while( ( n = read(sockfd, recvline, MAXLINE)) > 0)
{
recvline[n] = 0;
if(fputs(recvline, stdout) == EOF)
{
printf("fputs error\n");
exit(1);
}
}
if(n < 0)
{
printf("read error\n");
exit(1);
}
exit(0);
}
编译生成可执行文件后,在REDHAT下运行: ./a.out 192.168.42.128 提示connect error;
如果运行:./a.out 192.168.42.129 返回:24 JUL 2009 09:23:52 CST
两个系统的daytime服务是开通的,但为什么不能连到对方的daytime服务上呢?