Hi,

I am trying to create a chat program.(Programs are attached)
Please find the code below, where I am having the problem.

def run( self ):
    while 1:
            print "Hello There !!!!"
        print self.descriptors
        # Await an event on a readable socket descriptor
(sread, swrite, sexc) = select.select( self.descriptors, [], [] )
        print sexc
            # Iterate through the tagged read descriptors
        print sread
            print "Hello There 1 !!!!"
        for sock in sread:


For this I am getting the output as below:
bash-3.1$ python Server.py
Enter the Port:...9009
ChatServer started on port 9009
Hello There !!!!
[<socket._socketobject object at 0x0000000002487660>]


But it is not printing the value of sread or "Hello There 1 !!!!!"





import socket
import select


class ChatServer:
    def __init__( self, port ):
        self.port = port;
        self.srvsock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
        self.srvsock.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
        self.srvsock.bind( ("", port) )
        self.srvsock.listen( 5 )
        self.descriptors = [self.srvsock]
        print 'ChatServer started on port %s' % port
    def run( self ):
        while 1:
            print "Hello There !!!!"
            print self.descriptors
        # Await an event on a readable socket descriptor
            (sread, swrite, sexc) = select.select( self.descriptors, [], [] )
            print sexc 
            # Iterate through the tagged read descriptors
            print sread
            print "Hello There 1 !!!!"
            for sock in sread:
                # Received a connect to the server (listening) socket
                if sock == self.srvsock:
                    self.accept_new_connection()
                else:
                    # Received something on a client socket
                    str = sock.recv(100)
                    # Check to see if the peer socket closed
                    if str == '':
                        host,port = sock.getpeername()
                        str = 'Client left %s:%s\r\n' % (host, port)
                        self.broadcast_string( str, sock )
                        sock.close()
                        self.descriptors.remove(sock)
                    else:
                        host,port = sock.getpeername()
                        newstr = '[%s:%s] %s' % (host, port, str)
                        self.broadcast_string( newstr, self.srvsock )    

    def accept_new_connection( self ):
        newsock, (remhost, remport) = self.srvsock.accept()
        self.descriptors.append( newsock )
        newsock.send("You're connected to the Python chatserver\r\n")
        str = 'Client joined %s:%s\r\n' % (remhost, remport)
        self.broadcast_string( str, newsock )

    def broadcast_string( self, str, omit_sock ):
        for sock in self.descriptors:
            if sock != self.srvsock and sock != omit_sock:
                sock.send(str)
                print str,

if __name__ == '__main__':

    portno = int(raw_input("Enter the Port:..."))
    s = ChatServer(portno)
    s.run()

from Tkinter import *
import tkMessageBox
import socket
import logging
import sys, time
import pickle
import thread



class ClientChat():
    def __init__(self,serverport):
        self.counter = 0

        self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        self.host = 'localhost' # server address
        self.port = serverport # server port 

        # connect to server
        self.s.connect((self.host, self.port))

        self.chatclient = Tk()

        self.chatclient["padx"] = 200
        self.chatclient["pady"] = 200

        self.chatclient.title("Client")

        self.f1 = Frame(self.chatclient,width = 100, height = 10)
        self.f1.pack(side = TOP)

        self.f2 = Frame(self.chatclient,width = 100, height = 10)
        self.f2.pack(side = BOTTOM)

        
        self.recvmsg = Text(self.f1, width = 100, height = 10)
        self.sb = Scrollbar(self.f1)
        self.sb.pack(side = RIGHT, fill = Y)
        
        self.sb.config(command = self.recvmsg.yview)
        self.recvmsg.config(yscrollcommand=self.sb.set)
        self.recvmsg.pack(padx = 10, pady =10)

        self.sendmsg = Text(self.f2, width = 100, height = 5)
        self.sendmsg.pack(padx = 10, pady =20)

        self.sendbutton =Button(self.f2, width = 5, height = 2, text = "Send", 
command = self.senddata)
        self.sendbutton.pack(side = LEFT, padx = 10, pady = 10)

        self.sendbutton =Button(self.f2, width = 5, height = 2, text = "Exit", 
command = self.exitchat)
        self.sendbutton.pack(side = RIGHT, padx = 10, pady = 10)
        
        self.chatclient.mainloop()
        

    def senddata(self):
        self.k = self.sendmsg.get(1.0, END)
        self.sendmsg.delete(1.0, END)
        self.s.send(self.k)
            
        if self.counter == 0:
            thread.start_new_thread(self.recvdata,())
##        if self.k == '':
##            thread.exit()
##            self.s.close()
##            self.chatclient.destroy()

    def exitchat(self):
        self.s.close()
        self.chatclient.destroy()
        
    def recvdata(self):
        while 1:
            self.v = self.s.recv(1024) 
            self.recvmsg.insert(END,self.v)
            
                

if __name__ == '__main__':

    serverport = int(raw_input("Enter the server address:..."))
    c = ClientChat(serverport)
            

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to