質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

受付中

localhostへの接続が拒否される

DaiAoki
DaiAoki

総合スコア67

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

2回答

0評価

4クリップ

81516閲覧

投稿2016/12/23 03:31

編集2022/01/12 10:55

『Land Of Lisp』という書籍で簡易的なWebサーバを作る章の勉強をしています。
ポート8080にソケットを開いて、ブラウザで以下(p259)を入力したのですが、接続が拒否されてしまいます。

http://127.0.0.1:8080/greeting

Lisp

;;処理系はClispです (defun serve (request-handler) (let ((socket (socket-server 8080))) (unwind-protect (loop (with-open-stream (stream (socket-accept socket)) (let* ((url (parse-url (read-line stream))) (path (car url)) (header (get-header stream)) (params (append (cdr url) (get-content-params stream header))) (*standard-output* stream)) (funcall request-handler path header params)))) (socket-server-close socket))))

以下のコマンドでポート8080が正常に機能していることは確認済みですので、localhostに接続できていないことが原因であると考えています。

lsof -i :8080

いろいろと解決策を調べている中で、以下は試しました。
・ファイアーウォールの設定で、Google Chrome.appの接続を許可
・プロキシの設定で、「プロキシ設定を使用しないホストとドメイン」に*.localがあることを確認

原因の調査方法・調査観点などをご教示いただければと思います。
よろしくお願いします。

【追記】
Apacheの起動を行なっていなかったため、以下コマンドでhttp://localhostと打ち込んで「It works!」と表示されるところまでは確認できたのですが、ポート8080に接続しようとすると反応のない状況です。

sudo apachectl start

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

suama

2016/12/23 05:48

インターネットとの接続を切ったが状態で、ファイアウォールも無効化して確認することはできますか?お手元のpcからだとは思いますが。もしくは、違うプロセスが8080番を使っているかもしれません。
ikedas

2016/12/23 09:50

ご提示のソースコードが何ページに載っているか明記して下さい (書籍を見られる方が確認できるように)。あと、コードは正確に引用されているでしょうか (ご提示のコードを見る限り、socketに何か代入している箇所がないのですが)。
DaiAoki

2016/12/25 04:49

> suamaさん 確認しましたが、「127.0.0.1 ページは機能していません ERR_INVALID_HTTP_RESPONSE」のエラーになりました。lsof -i :8080で調べると、COMMANDとして、lisp.runが8080を使っていることになっていたため、ポートの接続には問題ない状態です。
DaiAoki

2016/12/25 04:50

>ikedasさん ご指摘の通り修正しました。また、ソースコードについてもご指摘の通りsocketを定義する箇所が漏れていたため修正しました。
ikedas

2016/12/25 05:39

書籍で確認できていなくてすみませんが、修正いただいた後のコードでは (let …) の括弧が (unwind-protect …) の前で閉じています。「socket」の直前に「(」がもう1個いるのでは。
DaiAoki

2016/12/25 05:46

>ikedasさん ご指摘の通り誤記です。修正しました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。