Сокет выдает ошибку при попытке подключиться к Python - PullRequest
1 голос
/ 04 декабря 2011

Я пытаюсь узнать о сокетах, и я не могу подключиться к IP-порту.это скрипт, который я получил:

инструмент тестирования сокета Стиана

import socket

print "send request to website to check if sockets work right"
ip = raw_input("website ip: ")
port = raw_input("website port: ")
socket.connect(ip, port)
tosend = "this is a test"
currVal = 0
while currVal < 1:
    socket.send(tosend)
    print "1 sockets sent..."
    currrVal += 1
print "Done sending sockets. This hopefully worked"

что-то не так с кодом Python?это работает только с ipv4 или ipv6?или он работает с обоими?

ОШИБКА IM IMT GETTING:

C:\Users\Swipper\Documents\Python\sockets>sock.py
send request to website to check if sockets work right
website ip: 127.0.0.1
website port:
Traceback (most recent call last):
  File "C:\Users\Swipper\Documents\Python\sockets\sock.py", line 8, in <modu
le>
    socket.connect(ip, port)
AttributeError: 'module' object has no attribute 'connect'

надеюсь, кто-то знает ответ.

PS: IИспользуйте Python 2.7!

-stian

Ответы [ 3 ]

4 голосов
/ 04 декабря 2011

Вы вызываете .connect() на модуле вместо объекта.Сначала вам нужно будет создать экземпляр объекта сокета, что обычно достигается с помощью socket.socket().Затем можно вызвать .connect() для возвращаемого объекта.

s = socket.socket()
s.connect((ip, int(port))
2 голосов
/ 04 декабря 2011

Сначала необходимо создать объект сокета:

s = socket.socket()
s.connect((ip, int(port))

вместо:

socket.connect(ip, port)

Затем использовать s.send и т. Д.

0 голосов
/ 04 декабря 2011

Не должен ли аргумент вызова connect быть кортежем?

socket.connect((ip, port))

И проверьте возвращаемое значение вызова send.

Кроме того, вы не узнаете, закрыто ли соединение на другом конце, если вы что-то не получите. Прием - это единственный верный способ узнать, закрыто ли соединение.

Редактировать: И, как говорят другие, вы должны создать объект сокета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...