亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3422 | 回復(fù): 2
打印 上一主題 下一主題

【socket問題】socketserver的finish方法老是報錯 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-08-30 13:45 |只看該作者 |倒序瀏覽
本帖最后由 wfnh 于 2012-08-30 18:22 編輯

一段代碼,finish老是報錯,不知道是什么原因,很多情況我都試過了,還是沒解決。

socket不是很熟悉,各位看看
服務(wù)端:
  1. #coding=gb2312
  2. #-------------------------------------------------------------------------------
  3. # Name:        模塊1
  4. # Purpose:
  5. #
  6. # Author:      Administrator
  7. #
  8. # Created:     02/03/2012
  9. # Copyright:   (c) Administrator 2012
  10. # Licence:     <your licence>
  11. #-------------------------------------------------------------------------------
  12. #!/usr/bin/env python
  13. #import gevent
  14. import SocketServer
  15. import sys
  16. import MsgHelper
  17. import os
  18. class RequestHandler(SocketServer.StreamRequestHandler):
  19.     def handle(self):
  20.             """Read from StreamRequestHandler's provided rfile member,
  21.             which contains the input from the client. Mirror the text
  22.             and write it to the wfile member, which contains the output
  23.             to be sent to the client."""
  24.         l = True
  25.         while l:
  26.             l = self.rfile.readline().strip()
  27.             if l:
  28.                 self.wfile.write(l[::-1] + '\n')
  29.                 print "client say:",l + '\n'



  30. class RouteService(SocketServer.StreamRequestHandler):
  31.     allow_reuse_address = True
  32.     client_map = {}
  33.     msg_helper = MsgHelper.MsgHelper()
  34.     def handle(self):
  35.         ip_address = self.client_address[0]
  36.         print ip_address
  37.         print  '-' * 80
  38.         self.client_map[ip_address] = True
  39.         while True:
  40.             msg = self.rfile.readline().strip()
  41.             #print "befor:",msg
  42.             if msg:
  43.                 print "recv msg:",msg
  44.                 struct = self.msg_helper.unpack(msg)
  45.                 print 'parse msg:',type(struct),struct
  46.                 self.wfile.write(self.msg_helper.pack({'respon':'ok'}) + '\r\n')
  47.                 #self.request.send(self.msg_helper.pack({'respon':'ok'}) + '\r\n')
  48.                 #self.wfile.flush()
  49.                 print '*' * 50

  50.     def finish(self):
  51.         print "@call finish"
  52.         if not self.wfile.closed:
  53.             print "@call finish 0"
  54.             self.wfile.flush()
  55.         self.wfile.close()
  56.         print "@call finish 1"
  57.         self.rfile.close()
  58.         print "@call finish 2"
  59.         ip_address = self.client_address[0]
  60.         print "client down:",ip_address
  61.         self.client_map.pop(ip_address)
  62.         self.request.close()



  63. if __name__ == '__main__':
  64.     hostname = '127.0.0.1'
  65.     port = 1399
  66.     print "pid:",os.getpid()
  67.     server = SocketServer.ThreadingTCPServer((hostname, port), RouteService)
  68.     server.serve_forever()
復(fù)制代碼
客戶端的:
  1. #coding=gb2312
  2. #-------------------------------------------------------------------------------
  3. # Name:        模塊1
  4. # Purpose:
  5. #
  6. # Author:      Administrator
  7. #
  8. # Created:     02/03/2012
  9. # Copyright:   (c) Administrator 2012
  10. # Licence:     <your licence>
  11. #-------------------------------------------------------------------------------
  12. #!/usr/bin/env python
  13. import socket
  14. import MsgHelper
  15. import os
  16. class MirrorClient:
  17.     def __init__(self, server, port):
  18.         #self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  19.         #self.wbufsize = 0
  20.         #self.rbufsize = -1
  21.         #self.wfile = self.socket.makefile('wb', self.wbufsize)
  22.         #self.rfile = self.socket.makefile('rb', self.rbufsize)
  23.         #self.socket.connect((server, port))
  24.         self.helper = MsgHelper.MsgHelper()
  25.         self.mail_box = MsgHelper.MailBox(server,port)

  26.     def mirror(self, s):
  27.         msg = {}
  28.         msg['do_check'] = s
  29.         ser = self.helper.pack(msg)
  30.         print "ser:",ser
  31.         self.mail_box.send(ser)
  32.       

  33.     def rece_msg(self):
  34.         msg = self.mail_box.recv()
  35.         print self.helper.unpack(msg)


  36.     def close(self):
  37.         self.mail_box.finish()

  38. if __name__ == '__main__':
  39.         hostname = '127.0.0.1'
  40.         port = 1399
  41.         print 'client pid:',os.getpid()
  42.         toMirror = 'weigun is good man'
  43.         m = MirrorClient(hostname, port)
  44.         for i in xrange(5):
  45.            print m.mirror(toMirror)
  46.         m.rece_msg()
  47.         m.close()
  48.         print "done"
復(fù)制代碼
MsgHelper模塊:
  1. #coding=gb2312
  2. #-------------------------------------------------------------------------------
  3. # Name:        模塊1
  4. # Purpose:
  5. #
  6. # Author:      Administrator
  7. #
  8. # Created:     02/03/2012
  9. # Copyright:   (c) Administrator 2012
  10. # Licence:     <your licence>
  11. #-------------------------------------------------------------------------------
  12. #!/usr/bin/env python
  13. import msgpack
  14. import socket
  15. class MsgHelper():
  16.     def __init__(self):
  17.         self.packer = msgpack.Packer()
  18.         self.unpacker = msgpack.Unpacker()

  19.     def pack(self,struct):
  20.         '''
  21.         打包成二進(jìn)制數(shù)據(jù),返回二進(jìn)制流
  22.         '''
  23.         return msgpack.packb(struct)
  24.         #return self.pack(struct)

  25.     def unpack(self,bin_stream):
  26.         return msgpack.unpackb(bin_stream)
  27.         #self.unpacker.feed(bin_stream)
  28.         #return self.unpacker.unpack()

  29. class MailBox():
  30.     def __init__(self,address,port,debug = False):
  31.         self.address = address or '127.0.0.1'
  32.         self.port = port or 1399
  33.         self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  34.         self.wbufsize = 0
  35.         self.rbufsize = -1
  36.         self.debug = debug
  37.         self.wfile = self.socket.makefile('wb', self.wbufsize)
  38.         self.rfile = self.socket.makefile('rb', self.rbufsize)
  39.         #--self.helper = MsgHelper()
  40.         self.socket.connect((address, port))

  41.     def __set_wbufsize(self,size):
  42.         self.wbufsize = size

  43.     def __set_rbufsize(self,size):
  44.         self.rbufsize = size

  45.     def send(self,msg):
  46.         if self.debug:
  47.             print msg
  48.         try:
  49.             self.wfile.write(msg)
  50.             self.wfile.write('\r\n')
  51.         except:
  52.             self.finish()
  53.             raise

  54.     def recv(self):
  55.         try:
  56.             recv_msg = self.rfile.readline().strip()
  57.             #--struct = self.helper.unpack(recv_msg)
  58.             if self.debug:
  59.                 print "recv msg:",recv_msg
  60.                 #--print "parse recv_msg:",type(struct),struct
  61.             return recv_msg
  62.         except:
  63.             self.finish()
  64.             raise


  65.     def finish(self):
  66.         if not self.wfile.closed:
  67.             self.wfile.flush()
  68.         self.wfile.close()
  69.         self.rfile.close()
  70.         self.socket.close()


  71. if __name__ == '__main__':
  72.     pass
復(fù)制代碼
輸出信息如下:
  1. pid: 8960
  2. 127.0.0.1
  3. --------------------------------------------------------------------------------

  4. recv msg: 仺do_check瞱eigun is good man
  5. parse msg: <type 'dict'> {'do_check': 'weigun is good man'}
  6. **************************************************
  7. recv msg: 仺do_check瞱eigun is good man
  8. parse msg: <type 'dict'> {'do_check': 'weigun is good man'}
  9. **************************************************
  10. recv msg: 仺do_check瞱eigun is good man
  11. parse msg: <type 'dict'> {'do_check': 'weigun is good man'}
  12. **************************************************
  13. recv msg: 仺do_check瞱eigun is good man
  14. parse msg: <type 'dict'> {'do_check': 'weigun is good man'}
  15. @call finish
  16. @call finish 0
  17. @call finish 1
  18. @call finish 2
  19. client down: 127.0.0.1
  20. ----------------------------------------
  21. Exception happened during processing of request from ('127.0.0.1', 64388)
  22. Traceback (most recent call last):
  23.   File "C:\Python27\lib\SocketServer.py", line 582, in process_request_thread
  24.     self.finish_request(request, client_address)
  25.   File "C:\Python27\lib\SocketServer.py", line 323, in finish_request
  26.     self.RequestHandlerClass(request, client_address, self)
  27.   File "C:\Python27\lib\SocketServer.py", line 639, in __init__
  28.     self.handle()
  29.   File "D:\test-area\getItem\gwsj\google svn\monitorService\routeService.py", li
  30. ne 50, in handle
  31.     self.request.send(self.msg_helper.pack({'respon':'ok'}) + '\r\n')
  32. error: [Errno 10053]
  33. ----------------------------------------
復(fù)制代碼

論壇徽章:
0
2 [報告]
發(fā)表于 2012-08-30 15:11 |只看該作者
回復(fù) 1# wfnh
報什么錯?

   

論壇徽章:
0
3 [報告]
發(fā)表于 2012-08-30 18:22 |只看該作者
106033177 發(fā)表于 2012-08-30 15:11
回復(fù) 1# wfnh
報什么錯?

報錯是:
Exception happened during processing of request from ('127.0.0.1', 6438
Traceback (most recent call last):
  File "C:\Python27\lib\SocketServer.py", line 582, in process_request_thread
    self.finish_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Python27\lib\SocketServer.py", line 639, in __init__
    self.handle()
  File "D:\test-area\getItem\gwsj\google svn\monitorService\routeService.py", li
ne 50, in handle
    self.request.send(self.msg_helper.pack({'respon':'ok'}) + '\r\n')
error: [Errno 10053]
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP