我有一个与多个客户端一起工作的多线程聊天服务器(每个客户端都在一个新线程中处理)。
如果客户端断开连接,服务器上的相关线程将挂在 inputstream.readLine() 上,这是一个阻塞调用。
如何设置某种超时,以便在 2000 毫秒后关闭套接字并释放线程而没有响应?
class Handler(socket: Socket) extends Runnable {
def run() : Unit = {
val inputstream = new BufferedReader(new InputStreamReader(socket.getInputStream()))
val outputstream = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))
var break = false
while(break != true){
val input = inputstream.readLine() // blocking call
// how do i time out after 2000ms?
input match {
case "update" =>
outputstream.write("message")
outputstream.newLine()
outputstream.flush()
case _ => // any other input, break and close socket
break = true
}
}
socket.close()
} …Run Code Online (Sandbox Code Playgroud) 我正在做一个 POST 请求,我有这个:
...
let json = try JSONSerialization.jsonObject(with: data, options: [])
print(json)
Run Code Online (Sandbox Code Playgroud)
这给出了这个输出:
{
code = 400;
}
Run Code Online (Sandbox Code Playgroud)
如何获取代码的值(这是一个字符串,在本例中为“400”)?
我试过这个:
let code = json["code"]
Run Code Online (Sandbox Code Playgroud)
但它说类型“Any”没有下标成员
我已经读过在文本文件的开头添加UTF-8字节顺序标记(3个字符)使其成为UTF-8文件,但我还读到unicode建议不要使用UTF-8的BOM.
我用PHP生成文件,我要求文件是UTF-8.我已经将UTF-8 BOM添加到文件的开头,但我收到了有关解析文件的公司文件开头的垃圾字符的反馈,这使得我要求将文件设为UTF- 8.
如果我在记事本中打开文件它没有显示BOM,如果我去保存,它会显示UTF-8作为默认选项.
在Textpad32中打开文件显示文件开头的3个字符.
那么什么使文件UTF-8?
scala.io.StdIn.readLine() 是阻塞调用吗?
从文档中,没有提到它是一个阻塞调用。
我想做这样的事情:
while(true){
val input = scala.io.StdIn.readLine()
input match{
case "quit" =>
...
case "stats" =>
...
case _ =>
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果它不阻塞,它会不断循环,将输入设置为空,并每次触发case _吗?
如果它被阻止,为什么它没有显示在文档中?或者我在哪里可以看到说它是阻塞的定义?
一般来说,我怎么知道一个方法是否阻塞?
我有一个Double,可以是正面或负面的,我想用以下方式显示:
对于正值:
+ $ 1.10
对于负值:
- $ 0.50
空白为0值
我试过这样的:
Double surcharge = ...
if(surcharge < 0){
cell.lblSurcharge.text = "-$" + String(format:"%.02f", surcharge)
}else if(surcharge > 0){
cell.lblSurcharge.text = "+$" + String(format:"%.02f", surcharge)
}else{
cell.lblSurcharge.text = nil
}
Run Code Online (Sandbox Code Playgroud)
但对于负值,它会像这样显示:
- $ - 0.50
如何正确格式化,或从Double中删除" - "?