0

クライアントをサーバーに接続し、それらの間の通信ストリームを取得しようとしています。接続が切断される唯一の理由は、ネットワーク エラーによるものか、クライアントが通話を停止したい場合を除きます。

私が直面している問題は、ハンドラーをタイトなループに保ち、JSON を解析することです。

私のサーバーコードは次のとおりです。

#!/usr/bin/env python

import SocketServer
import socket
import json
import time

class MyTCPServer(SocketServer.ThreadingTCPServer):
    allow_reuse_address = True

class MyTCPServerHandler(SocketServer.BaseRequestHandler):

    def handle(self):

        while 1:
            try:
                networkData = (self.request.recv(1024).strip())

                try:
                    jsonInputData = json.loads(networkData)
                    print jsonInputData

                    try: 
                        if jsonInputData['type'] == 'SAY_HI':
                            print "HI"
                    except Exception, e:
                        print "no hi"
                        pass

                    try: 
                        if jsonInputData['type'] == 'GO_AWAY':
                            print "Going away!"
                    except Exception, e:
                        print "no go away"
                        pass

                except Exception, e:
                    pass
                    #time.sleep(0.001)
                    #print "JSON Error", e

            except Exception, e:
                #time.sleep(0.001)
                pass
                #print "No message", e

server = MyTCPServer(('192.168.1.115', 13373), MyTCPServerHandler)
server.serve_forever()

私のクライアントコードは単純です:

#!/usr/bin/env python

import socket
import json
import time
import sys

hostname = '192.168.1.103'
port = 13373

try:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((hostname,port))

except Exception, e:
    print "Error, could not open socket: ", e

data  = {'type':'SAY_HI'}

sock.send(json.dumps(data))

data  = {'type':'SAY_BYE'}

sock.send(json.dumps(data))

「SAY_HI」と「SAY_BYE」というメッセージが送信されているのを見ることがありますが、ほとんどの場合、サーバー側にはデータが表示されていません。

4

1 に答える 1