[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:20698] Re: Q: DNS
越水です。
From: Tomoyuki Kosimizu <greentea@xxxxxxxxxxxxxxxx>
Subject: [debian-users:20696] Re: Q: DNS
Date: Thu, 10 Feb 2000 08:05:37 +0900
> ヤマ勘なのですが、w3mには問題がないように思うのです。下のようなRubyの
> スクリプト(Daytimeプロトコル=クライアント)でもモデムが反応します。
JavaとCでも調べてみたのですが、両者では外にパケットは洩れませんでした。
う〜む。
JavaとC++のコードを書いておきます:
// Java
import java.io.*;
import java.net.*;
class DaytimeC {
public static void main(String[] args) throws Exception {
String server = "localhost";
int port = 13;
if (args.length == 2) {
server = args[0];
port = Integer.parseInt(args[1]);
}
Socket soc = new Socket(server, port);
BufferedReader reader =
new BufferedReader(new InputStreamReader(soc.getInputStream()));
System.out.println(reader.readLine());
}
}
// C++
extern "C" {
#include <arpa/inet.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
}
#include <cerrno>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <stdexcept>
using namespace std;
const int MAXLINE = 1024;
int main(int argc, char* argv[])
{
try {
if (argc < 2) {
throw runtime_error("no server address");
}
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
throw runtime_error("socket() failed");
}
hostent* hp = gethostbyname(argv[1]);
if (! hp) {
throw runtime_error("gethostbyname() failed");
}
sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
memcpy(&addr.sin_addr, *hp->h_addr_list, sizeof(in_addr));
addr.sin_port = htons(13);
if (connect(sockfd, reinterpret_cast<sockaddr*>(&addr),
sizeof(addr)) < 0) {
throw runtime_error("connect() failed");
}
char buff[MAXLINE + 1];
int n;
while ((n = read(sockfd, buff, MAXLINE)) > 0) {
buff[n] = '\0';
if (fputs(buff, stdout) == EOF) {
throw runtime_error("fputs() failed");
}
}
if (n < 0) {
throw runtime_error("read() failed");
}
} catch (runtime_error& e) {
fprintf(stderr, "%s\n", e.what());
}
return 0;
}
// 越水
// greentea@xxxxxxxxxxxxxxxx