在LiveCode中利用socket进行通信(1)--入门介绍

本文介绍如何使用LiveCode进行socket通信。服务器端需监听端口并处理连接请求及数据收发;客户端则需建立连接并向服务器发送数据。文章提供非阻塞与阻塞模式示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前以为LiveCode不支持socket通信,后来仔细在网上搜索了一下发现还是可以的,而且在官网的语法说明里也找到了相关的命令,地址在这里:

http://livecode.com/developers/api/6.0.2/command/put/    ​

这里面应该囊括了所有LiveCode的指令(command),是我们学习语法攻略,遇到不懂的语法都可以来这里查一下。


 

怎样在LiveCode中利用socket进行通信

什么是socket?这里我就不再解释了

 


在LiveCode中使用socket进行通信——服务器端

    ​在LiveCode中使用socket是十分简单的。首先我们来看一下服务器的实现原理:服务器必须监听某个指定端口上的客户端的连接请求,为了实现监听,我们用下面的指令就够了:

accept connections on port 1234 with message "clientConnected"


这样,我们的服务器就会监听1234端口上所有客户端的连接请求。当有一个客户端连接上来之后,"clientConnected"信号将会被发送出去,用以处理这个新的连接。之后就可以利用这个新的连接来接收、发送信息给对应的客户端了。


on clientConnected pSocket
    read from socket pSocket with message "messageReceived"
end clientConnected


    ​上面的例子中,服务器是处在非阻塞模式下的。那就意味着每一次的read操作都会立即退出。当有从客户端发送来的数据时, "messageReceived"信号将会被发送,对应着将会有一个处理函数来处理这个连接(存在变量it里)和发送过来的数据。还有一种处理方法是阻塞模式,即省略略with message关键字,这时read操作将一直阻塞到有数据到来才返回当数据被接收后,read操作返回,数据被存放到变量it中。

    ​有一个附加的参数可以传递给read操作,指明需要读取多少数据。可以是字符数、行数(或者其他更大的单位——5行)或读到指定的字符才返回。

    ​按照我们前面讲过的,现在服务器处于非阻塞模式。当有数据从客户端到来时,"messageReceived"信号将会产生。与此同时,服务器可以给客户端一个回应,例子中我们只是简单的把收到的数据回写给客户端了。


on messageReceived pSocket, pMsg
    write pMsg to socket pSocket
    read from socket pSocket with message "messageReceived"
end messageReceived


    ​和read类似,write命令也有阻塞和非阻塞模式之分。如果我们想用非阻塞模式,我们只要简单的指定write结束后发送什么信号就可以了(with message "messageReceived")。为了保证继续收取客户端的消息,我们又添加了一条read操作。

    ​

    ​当服务器端不想继续和客户端交互的时候,就可以简单的关闭掉当前的连接(close socket tSocket)。当客户端主动断开连接的时候,服务器端会收到一条socketClosed消息,用来处理断开的连接。



在LiveCode中使用socket进行通信——客户端

    ​在客户端使用socket通信也是很简单的,首先也是要打开一条socket:


open socket to "host:port" with message "clientConnected"


    ​像read、write命令一样,open指令的参数也是可选的,用以区分阻塞或者非阻塞模式。如果用的是阻塞模式,一旦连接建立,就会通过it变量返回当前的连接。在非阻塞模式,它将会以参数的模式传递给回调函数。


    ​如果在连接服务器的过程中出错,"socketError"信号将会产生(如果错误是由寻找指定主机失败导致,错误信息将会记录在变量result中,而不会产生"socketError"信号。)


    ​以上open操作在非阻塞模式下工作,当socket建立后我们可以通过这个连接向服务器发送消息,并接收服务器的回应。

    

on clientConnected pSocket
    write "hello" & return to socket pSocket
    read from socket sSocket until return
    put it
    close socket pSocket
end clientConnected 



​原文链接:

 http://lessons.runrev.com/s/lessons/m/4071/l/12924-how-to-communicate-with-other-applications-using-sockets

 

如果本贴对你有用,请留个言让我知道,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值