This is my first socket program in python.
server.py
#! /usr/bin/python
################################################################################
# Name:Python Server Socket
# Description: A simple implementation for chat one to one in python socket.
# Date: 2009/5/10
# Programmer: Hsiang Hsien Hsiang
# Website:http://importcode.blogspot.com
###############################################################################
import socket
import threading
class serverThread(threading.Thread):
def __init__(self, connection, address):
self.connection = connection
self.address = address
self.onConnect = True
threading.Thread.__init__(self)
def run(self):
while self.onConnect:
recvData = self.connection.recv(1024)
if recvData != ":exit" and recvData != '':
print 'Client:' + recvData
else:
break
self.connection.close()
print "Connection Close"
def close(self):
self.onConnect = False
class server:
def __init__(self):
self.host = 'localhost' #host = 127.0.0.1
self.port = 8001 #port = 8001
self.onConnect = True
self.serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.serverSocket.bind((self.host, self.port))
self.serverSocket.listen(5)
self.connection, self.address = self.serverSocket.accept()
def serverRun(self):
print "Enter :exit to disconnect"
print 'Connected by', self.address
thread = serverThread(self.connection, self.address)
thread.start()
while 1:
sendData = raw_input()
try:
self.connection.send(sendData)
except socket.error:
print "No Body Online, Offline Now"
break
if sendData == ":exit":
thread.close()
break
if __name__ == '__main__':
server().serverRun()
client.py
#! /usr/bin/python
#############################################################################################
# Name:Python Client Socket
# Description: A simple implementation for chat one to one in python socket.
# Date: 2009/5/10
# Programmer: Hsiang Hsien Hsiang
# Website:http://importcode.blogspot.com
############################################################################################
import socket
import threading
class clientThread(threading.Thread):
def __init__(self, connection, address, client):
self.connection = connection
self.address = address
self.onConnect = True
self.client = client
threading.Thread.__init__(self)
def run(self):
while self.onConnect:
recvData = self.connection.recv(1024)
if recvData != ":exit" and recvData != '':
print 'Server:' + recvData
else:
print recvData
self.onConnect = False
self.client.close()
self.connection.close()
def close(self):
self.onConnect = False
class client:
def __init__(self):
self.onConnect = True
self.host = 'localhost' #host = 127.0.0.1
self.port = 8001 #port = 8001
self.clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.clientSocket.connect((self.host, 8001))
self.address = (self.host, 8001)
def clientRun(self):
print "Enter :exit to disconnect"
print 'Link to', self.address
thread = clientThread(self.clientSocket, self.address, self)
thread.start()
while self.onConnect:
sendData = raw_input()
try:
self.clientSocket.send(sendData)
except socket.error:
print "Server Offline, Disconnect Now"
break
if sendData == ':exit':
thread.close()
break
def close(self):
self.onConnect = False
if __name__ == '__main__':
client().clientRun()
Note:
There are many bug in this program.
Maybe you can improve it.
0 意見:
Post a Comment