Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Велосипед не работает. или недопонимание сокетов [RSS Feed]

#1 Авг. 17, 2010 23:12:16

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Решил сделать чат между двумя компьютерами
Интерфейс уже создал
Работает
Нужно наладить передачу динных. Сразу нашел сокеты.
И вот пример из книги
сервер

import socket, string

def do_something(x):
lst = map(None, x);
lst.reverse();
return string.join(lst, "")

HOST = "" # localhost
PORT = 33333
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind((HOST, PORT))
while 1:
print "Слушаю порт 33333"
srv.listen(1)
sock, addr = srv.accept()
while 1:
pal = sock.recv(1024)
if not pal:
break
print "Получено от %s:%s:" % addr, pal
lap = do_something(pal)
print "Отправлено %s:%s:" % addr, lap
sock.send(lap)
sock.close()
клиент
import socket

HOST = "" # удаленный компьютер (localhost)
PORT = 33333 # порт на удаленном компьютере
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.send("ПАЛИНДРОМ")
result = sock.recv(1024)
sock.close()
print "Получено:", result
сервер действительно работает и слушает порт 3333
а вот клиент выдаёт ошибку
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
sock.connect((HOST, PORT))
File "C:\Python27\lib\socket.py", line 222, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10049]
может нельзя запустить клиент и сервер на 1 компе?
В другой книге тоже похожий пример но там используетcz как host какойто адрес иннета.
а мне нужно передать информацию напрямую с одного компа на другой
с другой стороны В коне не ппрописан АйПишник и мне непонятно как он найдёт компьютер только по порту 33333.
А Где взять это тсамый Host я тоже толком не понимаю

П.С.
Не судите строго за глупые вопросы



Офлайн

#2 Авг. 17, 2010 23:44:38

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Укажите явно IP-адрес.
127.0.0.1



Офлайн

#3 Авг. 18, 2010 01:03:24

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Эмммм, а куда именно его указать? В Host?



Офлайн

#4 Авг. 18, 2010 01:10:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9901
Репутация: +  855  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

HOST = "localhost"
в сервере и клиенте



Офлайн

#5 Авг. 18, 2010 01:16:34

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Ухты, ввёл HOST = “localhost”
и действительно заработало.
Новот теперь вопрос. Оно работает на 1 компьютере. А на разный машинах( через интернет) оно зароботает?



Отредактировано (Авг. 18, 2010 01:17:16)

Офлайн

#6 Авг. 18, 2010 04:09:31

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Alex_Kutsan
Ухты, ввёл HOST = “localhost”
и действительно заработало.
Новот теперь вопрос. Оно работает на 1 компьютере. А на разный машинах( через интернет) оно зароботает?
да, только адреса нужно правильные, в клиенте - адрес сервера, а в сервере = “” (принимать от всех)

Офлайн

#7 Авг. 18, 2010 09:57:23

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Вот в этом и есть главный вопрос, всё остальное понятно в принципи.
Как узнать адрес сервера? , тоесть адрес своего компьютера?



Офлайн

#8 Авг. 18, 2010 10:27:43

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

пропиши его в днс и обращайся по имени

Офлайн

#9 Авг. 18, 2010 21:19:45

Alex_Kutsan
От:
Зарегистрирован: 2010-03-25
Сообщения: 150
Репутация: +  0  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

Эмммм. а можно като перефразировать?
что значит прописать адрес сервера в ДНС?
насколько я понимаю нужно в Host в клиенте записать ip адресс компа на котором расположен сервер. но для этого он обязан быть татистическим или нет? Или прописать ДНС? Н у меня на пример 3g интернет. И в его свой ствах не указан ДНС. А только IP



Офлайн

#10 Авг. 19, 2010 11:10:23

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Велосипед не работает. или недопонимание сокетов

1) проверь виден ли твой хост в инете, зайди на “мой ип” и сверь твой ли он, возможно тебя не видно в нете.
2) если хост в нете, то иди на dynDNS.org и бесплатно регистрируй себе домен, качай тузлу которая будет каждую минуту домену прикреплять твой ip.

таким образом твой х(в)ост будет доступен по доменному имени. =)

у меня в прошлом году так домашний комп стаблильно хостил несколько сайтов.

Офлайн

  • Начало
  • » Network
  • » Велосипед не работает. или недопонимание сокетов[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version