如何使用快速游乐场实现套接字连接?

安德列斯·阿尔巴尼斯(Andres Albanese)

我有这个简单的Perl软件来监视我的家庭自动化总线的活动,并在灯光改变其状态时“说”。我想在Xcode操场上使用Swift语言实现它。有什么解决办法吗?

#!/usr/bin/perl -w
#
use strict;
use IO::Socket::INET;
my $mh200ip = "10.0.1.82";
my $ownport = "20000";
my $frames;
my $socket = IO::Socket::INET->new(
    PeerAddr => $mh200ip,
    PeerPort => $ownport,
    Proto    => "tcp",
    Type     => SOCK_STREAM
);
die "Could not create socket: $!\n" unless $socket;
$socket->send("*99*1##");    # Sending OPEN ACK

while (1) {
    $socket->recv( $frames, 128 );
    if ( $frames ne '' ) {
        print "$frames\n";
        my $data = ($frames);
        my @values = split( '##', $data );
        if ( $data eq "*1*0*53##" ) {
            `say "light off"`;
        }
        if ( $data eq "*1*1*53##" ) {
            `say "light on"`;
        }
    } else {
        print "server closed connection";
        exit 1;
    }
}
弗朗切斯科·梅斯基亚(Francesco Meschia)

这是Perl片段到Swift的几乎口头翻译:

#!/usr/bin/swift
import Foundation

func say(whatToSay: String) {
    let task = NSTask()
    task.launchPath = "/usr/bin/say"
    task.arguments = [whatToSay]
    task.launch()
}

let addr = "127.0.0.1"
let port = 2000

var buffer = [UInt8](count: 255, repeatedValue: 0)

var inp : NSInputStream?
var out : NSOutputStream?

NSStream.getStreamsToHostWithName(addr, port: port, inputStream: &inp, outputStream: &out)

if inp != nil && out != nil {
    let inputStream : NSInputStream = inp!
    let outputStream : NSOutputStream = out!
    inputStream.open()
    outputStream.open()

    if outputStream.streamError == nil && inputStream.streamError == nil {
        let queryString: String = "*99*1##"
        let queryData: NSData = queryString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!
        while true {
            outputStream.write(UnsafePointer(queryData.bytes),maxLength:queryData.length)
            var readChars: Int = inputStream.read(&buffer, maxLength: buffer.count)
            if (readChars > 0) {
                let readString: String = NSString(data: NSData(bytes:buffer, length:readChars), encoding: NSUTF8StringEncoding)!
                if readString == "*1*0*53##" {
                    say("Light off")
                } else if readString == "*1*1*53##" {
                    say("Light on")
                }
            } else {
                println ("server closed connection")
                inputStream.close()
                outputStream.close()
                break
            }
        }
    } else {
        println ("could not create socket")
    }
} else {
    println ("could not initialize stream")
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何产生一个文档游乐场(混合html和swift代码)?

来自分类Dev

如何使Xcode项目的内容对Swift游乐场可见

来自分类Dev

游乐场:使用未解决的标识符“ NSColor”

来自分类Dev

游乐场执行终止,因为游乐场进程意外退出

来自分类Dev

Objective-C的游乐场

来自分类Dev

RemoveAtIndex使游乐场崩溃

来自分类Dev

Swift:在deinit方法中不输出println(不使用游乐场)

来自分类Dev

斯威夫特游乐场打印括号

来自分类Dev

如何在Swift游乐场中获得画布

来自分类Dev

Java游乐场的Gradle任务

来自分类Dev

斯威夫特游乐场和LeetCode OJ

来自分类Dev

是否可以在受游乐场(Xcode)训练的Android中使用.mlmodel?

来自分类Dev

GraphQL:如何通过游乐场传递查询变量?

来自分类Dev

这里的游乐场和REST连接器结果之间的差异

来自分类Dev

MongoDB $ group(Mongo游乐场)

来自分类Dev

如何在游乐场更新功能中发出http请求?

来自分类Dev

苹果开发人员文档和快速游乐场中的功能不匹配

来自分类Dev

如何在现场游乐场中调整视图的大小?Xcode

来自分类Dev

我如何在Swift游乐场看到异常?

来自分类Dev

在快速游乐场中使用T型

来自分类Dev

RemoveAtIndex使游乐场崩溃

来自分类Dev

随机功能游乐场Swift

来自分类Dev

快速故障排除,在Xcode游乐场中显示数据?

来自分类Dev

游乐场留言“次数”

来自分类Dev

如何快速打开多个套接字连接?

来自分类Dev

斯威夫特游乐场和LeetCode OJ

来自分类Dev

Swift 3游乐场日志以本地格式记录日期。如何?

来自分类Dev

快速布尔-游乐场

来自分类Dev

如何链接 swift 游乐场中的页面?

Related 相关文章

热门标签

归档