Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2017 12:17:44

ste1n88
Зарегистрирован: 2017-10-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

Очень нужна помощь. Уже не знаю, что и думать. Работаю с сокетами. Хочу написать код, чтобы можно было ввести IP-адрес, к которому потом можно было подключиться. Код такой:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ipaddress
addr = input (“адрес ИП-адрес :”) # Ввод ИП-адреса - выдаёт ошибку
int_port = input (“введите PORT хоста: ”) # Ввод порта - нормально работает

import socket

sock2 = socket.socket()
sock2.connect((addr,int_port)) # здесь в скобках ИП-адрес и порт хоста, к которому подключиться нужно

Ошибка такая:

адрес ИП :192.168.0.86
Traceback (most recent call last):
File “./sock-client.py”, line 6, in <module>
str_addr = input (“адрес ИП :”)
File “<string>”, line 1
192.168.0.86
^
SyntaxError: invalid syntax

Офлайн

#2 Окт. 27, 2017 12:29:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

во втором питоне используйте raw_input для ввода нечисловых значений



Офлайн

#3 Окт. 27, 2017 13:03:21

ste1n88
Зарегистрирован: 2017-10-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

Спасибо Вам огромное. Помогло. Тогда ещё вопрос. В третьем Питоне как быть? Там вот такая ошибка:

адрес ИП :192.168.0.86
введите PORT хоста: 9090
Traceback (most recent call last):
File “./sock-client.py”, line 12, in <module>
sock2.connect((int_addr,int_port))
TypeError: an integer is required (got type str)
Error in sys.excepthook:
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/apport_python_hook.py”, line 63, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
File “/usr/lib/python3/dist-packages/apport/__init__.py”, line 5, in <module>
from apport.report import Report
File “/usr/lib/python3/dist-packages/apport/report.py”, line 12, in <module>
import subprocess, tempfile, os.path, re, pwd, grp, os, time
File “/usr/lib/python3.5/tempfile.py”, line 184, in <module>
from random import Random as _Random
File “/home/test/programming/Python/random.py”, line 3
print random.randint(1,10)
^
SyntaxError: invalid syntax

Original exception was:
Traceback (most recent call last):
File “./sock-client.py”, line 12, in <module>
sock2.connect((int_addr,int_port))
TypeError: an integer is required (got type str)

Офлайн

#4 Окт. 27, 2017 13:05:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

приводить строку к целочисленному
int(“6254654”)



Офлайн

#5 Окт. 27, 2017 13:59:47

ste1n88
Зарегистрирован: 2017-10-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

то есть как именно? и как потом обратно?
вот так делать:
int(addr) = input (“адрес ИП :”)
port = input (“введите PORT хоста: ”)
sock2.connect((addr,port))
Напишите, пожалуйста, точнее. Я не совсем понимаю.

Офлайн

#6 Окт. 27, 2017 17:36:06

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

если я не ошибаюсь то порт должен быть числом

 addr = input (“адрес ИП :)
port = int(input (“введите PORT хоста: ))

Офлайн

#7 Окт. 27, 2017 18:05:45

ste1n88
Зарегистрирован: 2017-10-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

там есть такое:
int_port = input (“введите PORT хоста: ”)
и это работает. Просто port = input… не работало, а int_port = input… работает

Офлайн

#8 Окт. 27, 2017 19:26:52

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

ste1n88
port = input… не работало, а int_port = input… работает
разница только в имени переменной port и int_port но вы задали вопрос относительно port
ste1n88
то есть как именно? и как потом обратно?
вот так делать:
int(addr) = input (“адрес ИП :”)
port = input (“введите PORT хоста: ”)
sock2.connect((addr,port))
а пытаетесь возможно запустить в коде где переменная используется int_port.
'''с помощью функции connect, которая принимает этот самый хост (IP-адрес или можно сразу обычный адрес буквами написать) и порт.
conn.connect( (“127.0.0.1”, 14900) )''' и разница в версиях питона тоже имеет значение в 2-ом int_port = input() в переменной число, в 3-ем int_port = input()-строка, int_port = int(input())-число

Офлайн

#9 Окт. 30, 2017 11:35:25

ste1n88
Зарегистрирован: 2017-10-27
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Ввести IP-адресс с клавиатуры, чтобы потом и подключиться к этому хосту

Всё. Разобрался. Частично ответы всех участников помогли. Всем спасибо))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version