2013-02-26 5 views
1

Я создал простой веб-сервер Python. Сервер работает нормально, подключается к браузеру и отправляет данные. Когда у меня есть файлы, включенные в HTML-документ, я отправляю (например, <img src="image_path"/>)OSError: [WinError 10038] webserver

Он не хочет отправлять данные и другие, включая таблицы стилей. Я использую веб-браузер Chrome, и получить thoose заголовки:

GET /img.jpg HTTP/1.1 
Host: localhost 
Connection: keep-alive 
User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.17 (KHTML, like Gecko) 
Chrome/24.0.1312.57 Safari/537.17 
Accept: */* 
Referer: http://localhost/ 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: pl,en-US;q=0.8,en;q=0.6,nb;q=0.4 
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.3 

И я получаю сообщение об ошибке:

Unhandled exception in thread started by <function handler at 0x02C28150> 
Traceback (most recent call last): 
File "C:\Users\CamIce\Desktop\PyServer v2\server.py", line 16, in handler 
data = clientsock.recv(BUFSIZ) 
OSError: [WinError 10038] Próbowano przeprowadzić próbę na obiekcie, który nie jest 
gniazdem 

код слишком долго для этого сообщения, так что я должен был отправить его на Pastebin : http://pastebin.com/n19J0y6A

+0

В случае, если кто-то задавался вопросом, как я, ошибка переводит: Операция сокета на несете. Операция была предпринята для чего-то, что не является сокетом. Параметр дескриптора сокета не ссылался на действительный сокет, или для выбора член fd_set недействителен. – Iguananaut

ответ

0

Вы пытались привязать свой входящий сокет к другому, не привилегированному порту вместо порта 80 (скажем, что-то выше 1024)? Мне кажется, что брандмауэр Windows каким-то образом вмешивается или, возможно, имеет некоторые другие проблемы с разрешением. Мне просто кажется странным, что вы не получили сообщение об ошибке перед вызовом recv(), но я не очень хорошо знаю WIndows.

Я не вижу ничего плохого в вашем коде.

+0

Хотя в стороне, вам стоит рассмотреть возможность использования 'threading.Thread' вместо библиотеки' thread 'нижнего уровня. Вам вообще не нужен 'from _thread import *'. – Iguananaut

+0

Спасибо за ответ! Я пробовал много разных портов, с тем же результатом. Сервер запускает файл index.html, а также отправляет не найденный файл, но если я попытаюсь получить другие файлы, такие как img.jpg, style.css или txt-файл, который я разместил там, он не работает. – CamIce

+0

У меня проблема с сервером, который не отправляет данные. Я забыл отформатировать запрошенный файл, поэтому он удалил начало/с начала (в заголовках http все запросы начинаются с /). Но я все еще получаю ту же ошибку, которая довольно раздражает и, вероятно, будет отображаться в файле журнала, который я планирую добавить, чего я не хочу :( – CamIce

Смежные вопросы