【发布时间】:2014-04-06 07:00:39
【问题描述】:
我有一个非常简单的套接字客户端程序,我想用它来 ping 我的邮件服务器(例如),以确保它处于活动状态并做出响应。我正在使用以下代码进行连接:
portno=25;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if (sockfd<0) error("Cannot open socket");
server=gethostbyname(argv[2]);
if (server==NULL) {
printf("Error: No such host exists\n");
exit(3);
}
bzero((char*)&srvr,sizeof(srvr));
srvr.sin_family=AF_INET;
bcopy((char*)&server->h_addr,(char*)&srvr.sin_addr.s_addr,server->h_length);
srvr.sin_port=htons(portno);
if (connect(sockfd,(struct sockaddr*)&srvr,sizeof(srvr)) <0) error("Error connecting");
我在命令行上将服务器名称(作为 localhost)作为第二个参数传递。它总是挂在连接调用中。我也尝试连接到谷歌的邮件服务器之一,结果相同。
我能够远程登录到我的本地服务器和谷歌服务器上的端口 25 并发出 HELO 命令并获得响应。我以root身份运行程序。
我不确定如何进一步确定问题。任何帮助将不胜感激。
【问题讨论】:
-
This 通常被推荐....因为
gethostbyname已过时.... -
@Recker 我知道,我刚刚剪切并粘贴了一些旧代码,因为我认为它可以让我更快地启动和运行。