Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从iOS切换python布尔值_Python_Ios_Objective C - Fatal编程技术网

从iOS切换python布尔值

从iOS切换python布尔值,python,ios,objective-c,Python,Ios,Objective C,我遵循这个:教程 我把这些东西做得很好,作为一个完全不懂这一点的人,我一辈子都不知道如何将Python布尔值添加到教程中提到的“chatserver.py”文档中,粘贴在下面 我不仅想添加一个,还想用一个按钮在iPhone应用程序中切换它,然后请求从服务器返回 像, 用于切换布尔值(如何发送切换消息)以及如何询问服务器布尔值的状态的按钮 我为这个悬而未决的问题道歉 这是当前的服务器:(超级复杂,哇哦!) 首先,您必须决定是为每个连接指定一个单独的布尔值,还是为每个人指定一个共享值,或者是介于两者

我遵循这个:教程

我把这些东西做得很好,作为一个完全不懂这一点的人,我一辈子都不知道如何将Python布尔值添加到教程中提到的“chatserver.py”文档中,粘贴在下面

我不仅想添加一个,还想用一个按钮在iPhone应用程序中切换它,然后请求从服务器返回

像, 用于切换布尔值(如何发送切换消息)以及如何询问服务器布尔值的状态的按钮

我为这个悬而未决的问题道歉

这是当前的服务器:(超级复杂,哇哦!)


首先,您必须决定是为每个连接指定一个单独的布尔值,还是为每个人指定一个共享值,或者是介于两者之间的某个值(例如,每个用户都有一个单独的值,在使用
iam
登录后可用)

我将为每个连接创建它,通过将其存储为
协议
实例属性来实现。您可以通过将其作为模块全局或
协议
类属性等存储在中来实现全局共享。如果您想要更奇特的东西,您将需要某种全局/类/etc.映射

def connectionMade(self):
    #self.transport.write("""connected""")
    self.factory.clients.append(self)
    print "clients are ", self.factory.clients
    self.boolean_flag = False

def dataReceived(self, data):
    ...
    if command == "iam":
        self.name = content
        msg = self.name + " has joined"
    elif command = "set":
        self.boolean_flag = True
        msg = self.name + " has set his flag"
    elif command = "clear":
        self.boolean_flag = False
        msg = self.name + " has cleared his flag"
    elif command = "get":
        self.message("Your flag is {}\n".format(self.boolean_flag))
        msg = self.name + " has checked his flag"
    ...
就这些


然而,值得注意的是,您的代码一开始根本无法工作

您已经创建了一个通用的
internet.protocol
。这意味着您的
dataReceived
会在任何时候收到一些字节时被调用。这些字节可以是半条消息,也可以是半条消息。所以,我可能会给你发
“iam:abarnert”
,然后发
“msg:hello”
,但你会看到,比如说,
“ia”
,然后是
“m:abarnertmsg:h”
,然后是
“ello”

最糟糕的是,当您在一台计算机上或在某些类型的LAN上测试所有这些时,实际上似乎工作正常,一方的每个发送接收与另一方的接收完全相同。但一旦你把它放到互联网上,它就会完全失败


这就是为什么Twisted附带了一系列稍高级别的协议,例如,换行符分离协议、NetString协议或任何您想要的协议。但是,如果您只使用最低级别的原始互联网协议,您必须自己处理缓冲和定界以及所有这些事情。这是您不想做的。

首先,您必须决定是为每个连接指定一个单独的布尔值,还是为每个人指定一个共享值,或者是介于两者之间的某个值(例如,每个用户都有一个单独的值,在使用
iam
登录后可用)

我将为每个连接创建它,通过将其存储为
协议
实例属性来实现。您可以通过将其作为模块全局或
协议
类属性等存储在中来实现全局共享。如果您想要更奇特的东西,您将需要某种全局/类/etc.映射

def connectionMade(self):
    #self.transport.write("""connected""")
    self.factory.clients.append(self)
    print "clients are ", self.factory.clients
    self.boolean_flag = False

def dataReceived(self, data):
    ...
    if command == "iam":
        self.name = content
        msg = self.name + " has joined"
    elif command = "set":
        self.boolean_flag = True
        msg = self.name + " has set his flag"
    elif command = "clear":
        self.boolean_flag = False
        msg = self.name + " has cleared his flag"
    elif command = "get":
        self.message("Your flag is {}\n".format(self.boolean_flag))
        msg = self.name + " has checked his flag"
    ...
就这些


然而,值得注意的是,您的代码一开始根本无法工作

您已经创建了一个通用的
internet.protocol
。这意味着您的
dataReceived
会在任何时候收到一些字节时被调用。这些字节可以是半条消息,也可以是半条消息。所以,我可能会给你发
“iam:abarnert”
,然后发
“msg:hello”
,但你会看到,比如说,
“ia”
,然后是
“m:abarnertmsg:h”
,然后是
“ello”

最糟糕的是,当您在一台计算机上或在某些类型的LAN上测试所有这些时,实际上似乎工作正常,一方的每个发送接收与另一方的接收完全相同。但一旦你把它放到互联网上,它就会完全失败


这就是为什么Twisted附带了一系列稍高级别的协议,例如,换行符分离协议、NetString协议或任何您想要的协议。但是,如果您只使用最低级别的原始互联网协议,您必须自己处理缓冲和定界以及所有这些事情。您不想这样做。

您是在为每个连接寻找一个单独的布尔值,还是为每个客户端寻找一个单独的布尔值(以某种更大的方式定义,例如从
iam
命令中定义的
name
),还是由所有用户共享的布尔值?此外,这个问题的哪一部分在所有iOS特定的或与ObjC相关,除了聊天协议名为IphoneChat?@abarnert之外,我想说的是,因为我正在使用的教程是针对iphone的。如果你真的认为它与Objective-C相关,为什么你不发布任何Objective-C代码?您链接到的教程甚至显示了在您编写任何iOS代码之前如何使用
telnet
测试此服务器。如果你能做到这一点,它就不是特定于iOS的。@abarnert它不是iOS-spesific-但是由于链接教程是针对iphone的,并且脚本处理的数据就是为了这个目的而做的,我觉得这是一个合适的标记。你是在为每个连接寻找一个单独的布尔值,还是为每个客户端寻找一个布尔值(以更大的方式定义,例如,来自
iam
命令的
name
),还是所有用户共享的?还有,除了聊天协议名为
IphoneChat
,这个问题的哪一部分与iOS特定或ObjC相关?@abarnert我想说是的,因为我正在使用的教程是针对iphone的。如果你真的认为它与Objective-C相关,为什么不发布任何Objective-C代码您链接到的torial甚至显示了在您编写任何iOS代码之前如何使用
telnet
测试此服务器。如果您能够做到这一点,它就不是特定于iOS的。@abarnert它不是iOS-spesific-但由于链接的教程是针对iphone的,并且脚本处理的数据是为此目的而编写的,我觉得这是一个合适的标记。对不起,我意识到我应该指定类型。只是一个随机布尔值,在教程中工作,切换。所以它可能就是这样