Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 2

Не получается осуществить multithreading в python

08.12.2016, 07:05. Показов 599. Ответов 0

Студворк — интернет-сервис помощи студентам
Есть программа клиент/сервер в питоне. Питаюсь сделать так, чтобы когда один клиент заходит и логинится с помощью имени и пароля, чтобы этот же клиент мог зайти и залогинится из другого места(компьютера, девайса и так далее),вообщем запускаю одну и ту же программу "клиент" с разных папок, но с одним и тем же именем и паролем. "Клиент" заходит с одного места, и сервер принимает имя и пароль. Когда этот же "клиент" заходит с другого места в то же время, сервер отображает новую нить-thread, но строчку пароля не отображает и дальше,соответственно, ничего не идет. Не знаю уже что и как исправить, чтобы один клиент мог логинится одновременно на сервере.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# server2.py
 
import socket                                               # Import socket module
import ssl
import sys                                                  # Import system-specific parameters and functions
import hashlib
import os.path                                              # Import module to manipulate paths
import os, time, _thread as thread
 
from threading import Thread
from SocketServer import ThreadingMixIn
socket.gethostbyname
TCP_IP = 'localhost'
TCP_PORT = 9001
BUFFER_SIZE = 1024
 
def now():
    return time.asctime()
 
def myrec(the_socket):
    total_data=[]
    while True:
        data = the_socket.recv(8192)
        if not data: break
        total_data.append(data)
    return ''.join(total_data)
 
 
 
class ClientThread(Thread):
 
    def __init__(self,ip,port,sock):
        Thread.__init__(self)
        self.ip = ip
        self.port = port
        self.sock = sock
        print " New thread started for "+ip+":"+str(port)
 
    def run(self):
            user_names = []
        passwords = []
    
 
            #user_names, passwords = process_file("pass.txt")
 
            user = self.sock.recv(1024)                        # Get up to 1024 bytes at a time
            print "User: ", user
 
            try:
        file_conn = open("pass.txt")
        data = file_conn.readlines()
 
        for i in range(len(data)): 
            if i%2 == 0:
                user_names.append(data[i][:-1])
            else:
                passwords.append(data[i][:-1])
            
        file_conn.close()
        except:
        sys.exit('There was a problem reading the file!')
 
 
 
            if user not in user_names:
                    self.sock.send ("Unkown User Name, terminating... ")
                    sys.exit('Unkown User Name, terminating... \n')
        
        
            else:
                    self.sock.send ("Please enter password: ")
                    password = self.sock.recv(1024)                        # Get up to 1024 bytes at a time
                    print "Password sent to server." + password
                user_input = hashlib.sha224(password).hexdigest()
                    dir_name = ((r'/home/%s') % (user))
                
                    os.chdir(dir_name)
        
                    if user_input != passwords[user_names.index(user)]:
        
            
               print 'Incorrect Password!\n'
                       self.sock.send ("Incorrect password. ")
 
 
               sys.exit('Incorrect Password, terminating... \n')
                    else:
 
                   print 'User is logged in!\n'
                       self.sock.send ('User is logged in!\n')   
 
                       filename='se.py'
                       f = open(filename,'rb')
                       while True:
                          l = f.read(BUFFER_SIZE)
                          while (l):
                              self.sock.send(l)
                #print('Sent ',repr(l))
                              l = f.read(BUFFER_SIZE)
                          if not l:
                             f.close()
                             self.sock.close()
            self.sock.close()
                             
tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpsock.bind((TCP_IP, TCP_PORT))
threads = []
 
while True:
    tcpsock.listen(5)
    print "Waiting for incoming connections..."
    (conn, (ip,port)) = tcpsock.accept()
    print 'Got connection from ', (ip,port)
    newthread = ClientThread(ip,port,conn)
    newthread.start()
    threads.append(newthread)
 
for t in threads:
    t.join()
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# client2.py
#!/usr/bin/env python
 
 
import socket                                                    # Import socket module
import sys                                                       # Import system-specific parameters and functions
import os.path                                                   # Import module to manipulate paths
import ssl
import pprint
 
TCP_IP = 'localhost'
TCP_PORT = 9001
BUFFER_SIZE = 1024
 
def myrec(the_socket):
    total_data=[]
    while True:
        data = the_socket.recv(8192)
        if not data: break
        total_data.append(data)
    return ''.join(total_data)
 
print '\nUser & Password Authentication\n'
 
 
ssl_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ssl_sock.connect((TCP_IP, TCP_PORT))
 
print 'file opened'
user = raw_input('Please Enter User Name: ')
print 'name send to server: ' + user   
ssl_sock.send(user)
 
data = ssl_sock.recv(1024)
print data
    
if data == "Unkown User Name, terminating... ":
           sys.exit('Unknown user name, terminating... \n')
 
else:
          # data = ssl_sock.recv(2048)
   
           password= raw_input(data)
           print 'pas send to server: ' + password   
           ssl_sock.send(password)
    
           data = ssl_sock.recv(2048)
           if data == "User is logged in!\n":
              dir_name = ((r'/home/cl/%s') % (user))
                
              os.chdir(dir_name)
 
              print 'Client is logged in!\n'
 
              with open('received_file', 'wb') as f:
                  print 'file opened'
                  while True:
                      #print('receiving data...')
                      data = ssl_sock.recv(BUFFER_SIZE)
                      print('data=%s', (data))
                      if not data:
                         f.close()
                         print 'file close()'
                         break
                      # write data to a file
                      f.write(data)
          
        
           # print "exit client"
       
           elif data == "Incorrect password. ":
 
               # print 'Incorrect password. \n'
              sys.exit('Incorrect password. \n')
 
           else:
              print "Terminating... \n"
  
 
print('Successfully get the file')
ssl_sock.close()
print('connection closed')
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2016, 07:05
Ответы с готовыми решениями:

Не получается осуществить поиск
Здраствуйте, у меня проблемка, делала курсач на С++ Builder, владею им плоховато, больше с Delphi дружу. Вот, у меня имеется таблица...

Не могу установить библиотеку pyqt5-tools python не получается через терминал и настройки и python itnerpritathor
Прошу помочь

Не получается осуществить задачу.пожалуйста
Добавить в поле Список2 на Form1 дополнительную строку – “ВСЕГО N произведений”, где N - число произведений в Списке 2.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2016, 07:05
Помогаю со студенческими работами здесь

Не получается осуществить чтение из файла
Здравствуйте. У меня не получаеться осуществить чтение из файла, то есть код компилируется, но программа не открывает файл на чтение. Вот...

Не получается осуществить ввод в конструкторе
По какой-то неведомой мне причине пропускает ввод "ФИО получателя" . Прошу помощи. Вообще нужно выполнить вот это задание: Описать...

Не получается осуществить задачу.пожалуйста
Помогите пожалуйста. Нужно чтобы на форме Form 1 при выборе типа воздействия и выборе объекта, при нажатии на кнопку результат ( или без...

Не получается осуществить запрос на добавление данных в БД
Имеется база данных с фильмами (Database.mdb). При добавлении данных через ПС в таблицу Film и SoonFilm проблем не возникает. А вот если в...

Не получается осуществить переход от stdio.h к fstream.h
Вместо стандартного (stdio.h) использовать потоковый ввод / вывод (iostream.h, fstream.h) для чтения файлов и вывода их на экран. Никак...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru