Делаю клиент чата для курсовой. Сервер уже написан другим человеком. Третий человек пишет формы.
Проблема в том, что мне нужен метод который один раз включает прием сообщений и второй который отправляет. Помогите реализовать. Что сделано сейчас мной:
сервер для теста:
import socket
Socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
Socket.bind(("127.0.0.1",81))
Socket.listen(100)
while True:
conn, adr = Socket.accept()
print "Connected", adr
data=conn.recv(1024)
if data:
print "Server recv DATA: "+data
conn.send(data.upper())
conn.close()
КЛИЕНТ:
'''
Client classes
@author: ivan
'''
import socket
from threading import Thread
class ClientInfo:
def __init__(self):
self.userName=""
self.passWord=""
class Client:
def __init__(self):
'Client init'
self.Socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.data=""
self.enableRecive=False
self.sendMessage=True
self.messageText=""
def Connect(self,ip,port):
'connect to ip and port, where ip string and port integer'
self.Socket.connect((ip,port))
print "Connect"
def Disconnect(self):
'connect to ip and port'
self.Socket.close()
print "Disconnect"
def Send(self,message):
'send message to server'
self.Socket.send(message)
print "Send"
def StartReceive(self,cizeOfPocket):
print "StartReceive "
if self.enableRecive==True:
print "self.enableRecive"
while self.enableRecive:
self.data=self.Socket.recv(cizeOfPocket)
print "Message: "+self.data
def Receive(self,cizeOfPocket):
print "Receive "
while True:
if self.enableRecive:
self.data=self.Socket.recv(cizeOfPocket)
else:
self.Send(self.messageText)
def StopReceive(self):
self.enableRecive=False
def GetReceivedData(self):
print self.data
receiver=Client()
receiver.Connect("127.0.0.1", 81)
receiver.enableRecive=True
Thread(target=receiver.Send,args=["Hello worlllld1"]).start()
receiver.StartReceive(1024)
Thread(target=receiver.StopReceive).start()
Thread(target=receiver.Send,args=["Hello worlllld2"]).start()
receiver.StartReceive(1024)
receiver.Disconnect()
Т.е. я хочу получить такое :
"Hello world1"
"Start receive"
"Hello world 2"
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.