Bonjour a tous j'ai un problème avec mon pt programme
je veux faire une connexion entre deux fenêtres client et serveur avec une connexion via socket mon serveur marche mais je bug côté client.
Est ce que qq pourrai éclairer ma lanterne. merci
#côté client
# -*- coding: cp1252 -*-
import socket, sys, select, msvcrt
import Pmw
from Tkinter import *
class fenetreClient:
def __init__(self):
self.fenetre=Tk()
self.fenetre.title("Client")
self.fenetreTitle = Label(self.fenetre, text="Côté Client", fg="black", font='georgia 12')
self.fenetreTitle.pack()
self.fenetreTextport = Pmw.EntryField()#a la place du port ds clientsocket
self.fenetreTextport.pack(expand=YES, fill=BOTH, padx=50, pady=5)
self.fenetreText = Pmw.EntryField()
self.fenetreText.pack(expand=YES, fill=BOTH, padx=50, pady=5)
self.boutton1 = Button(self.fenetre, text="Démarrer client", command = self.ConnectionClient)
self.boutton1.pack(side=LEFT,padx=20, pady=20)
self.boutton2 = Button(self.fenetre, text="Déconnection", command = self.Deconnection)
self.boutton2.pack(side=RIGHT,padx=20, pady=2)
self.boutton3 = Button(self.fenetre, text="Envoyer", command = self.Envoyer())
self.boutton3.pack(side=RIGHT,padx=20, pady=20)
self.fenetre.mainloop()
def Envoyer(self):
self.fenetreText = raw_input(" ")
def Deconnection(self):
self.connection.close()
def ConnectionClient(self):
#Création d'une socket
connection = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#.get pour récupérer le port il faut caster le entryfield en int c'est un string
# remplir clientaddresse avec adresse et n°port du server
connection.connect(("localhost",self.fenetreTextport))
#attend l'arrive d'un message de fenetreTextArea
connection.send (self.fenetreText)
#ouverture d'une connection vers le serveur
line = connection.recv(1024)
#à la fin des échanges, fermer
connection.close()
if __name__ == '__main__':
client = fenetreClient()
#Côté server
# -*- coding: cp1252 -*-
import Server, sys, msvcrt
import socket
import Pmw
from Tkinter import *
class fenetreServer:
def __init__(self):
self.fenetre=Tk()
self.fenetre.title("Serveur")
self.fenetreTitle = Label(self.fenetre, text="Côté Serveur", fg="black", font='georgia 12')
self.fenetreTitle.pack()
self.fenetreText = Pmw.ScrolledText(self.fenetre,labelpos=N,label_text ="Réception des messages",label_font ='Verdana 15 bold',
label_fg='black', label_pady=1, text_font='Verdana 10 normal', text_bg ='white', text_padx=5, text_pady=5,
borderframe=15, borderframe_borderwidth=20)
self.fenetreText.pack(expand=YES, fill=BOTH, padx=50, pady=5)
self.fenetreText.tag_configure('msgServer', foreground ='white', font ='System 10 bold')
self.fenetreText.tag_configure('msgClient', foreground ='white', font ='Verdana 10 bold')
boutton1 = Button(self.fenetre, text="Démarrer serveur", command = self.connectionServer)
boutton1.pack(side=LEFT,padx=20, pady=20)
boutton2 = Button(self.fenetre, text="Quitter", command = self.fenetre.destroy)
boutton2.pack(side=RIGHT,padx=20, pady=2)
self.fenetre.mainloop()
def connectionServer(self):
#création d'une socket
connection = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#Associer la socket à un port
serveradresse = (('localhost',5678))
#associe une socket a une adresse locale
connection.bind(serveradresse)
TailleMax = 5 #5 Attentes max sur la file
#serveur de taille max de la liste d'attente
connection.listen(TailleMax)
#créer une socket server associée au numero de port "port"
nouveausock, serveradresse = connection.accept()
#Accepte la connection d'un client
print "connection TCP depuis %s sur port %d"%(serveradresse)
line = nouveausock.recv(1024)
#En attente des demandes
while line:
line = nouveausock.recv(1024)
self.fenetreText.insert(END,line)
self.fenetreText.update()
#si la connection n'a pas cette configuration
#if not line: break
#nouveausock.send(line)
#fermeture de connection
nouveausock.close()
# now on accepte de la prochaine connection
if __name__ == '__main__':
server= fenetreServer()