服务器端如下:
支持多线程
import socket
import sys
import threading
class mythread(threading.Thread):
def __init__(self,connection,address):
threading.Thread.__init__(self)
self.thread_connection = connection
self.thread_address = address
self.thread_stop = False
self.a = 0
def run(self):
try:
self.thread_connection.settimeout(100)
while not self.thread_stop:
buf = self.thread_connection.recv(1024)
print buf
if buf == "stop":
self.thread_stop = True
else:
self.thread_connection.send('welcome to server!'+ str(self.a))
self.a = self.a+1
except socket.timeout:
print 'time out'
self.thread_connection.close()
if __name__ == '__main__':
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
sock.bind(('10.211.55.5', 9989))
except socket.error,msg:
print 'Bind failed.Error Code:'+str(msg[0])+'Message'+msg[1]
sys.exit()
print "socket bind complete"
sock.listen(5)
a = 0
while True:
connection,address = sock.accept()
thread1 = mythread(connection,address)
thread1.start()
客户端如下:
import socket
import time
if __name__ == '__main__':
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
print 'Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1]
sys.exit();
# remote_ip = socket.gethostbyname("www.baidu.com")
# except socket.gaierror
sock.connect(('10.211.55.5', 9989))
time.sleep(2)
strs = "start"
while(strs != "stop"):
try:
strs = raw_input("Enter your input: ");
sock.sendall(strs)
reply = sock.recv(1024)
print "reply is : "+reply
except socket.error:
print "send failed or rec failed"
sock.close()
客户端输入stop的时候结束与服务器的链接。