- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对流或套接字连接了解不多,但似乎没有其他方法可以满足我的需要。我正在尝试构建一个简单的连接,该连接将允许我监视打开的连接并在收到输入时读取该输入。
连接工作正常,但用户界面在连接设置期间卡住。我不知道如何将其推到后台,这样它就不会干扰用户界面。
套接字类别如下
import Foundation
protocol SocketDelegate {
func hasBytes(stream: Stream)
func opened(stream: Stream)
func error(stream: Stream)
func closed(stream: Stream)
func other(stream: Stream)
}
class Socket: NSObject, StreamDelegate {
fileprivate var hostname: String
fileprivate var port: Int
fileprivate var delegate: SocketDelegate?
fileprivate var istreamopen: Bool
fileprivate var ostreamopen: Bool
fileprivate var istream : InputStream?
fileprivate var ostream : OutputStream?
init(hostname: String, port: Int) {
self.hostname = hostname
self.port = port
self.istreamopen = false
self.ostreamopen = false
Stream.getStreamsToHost(withName: self.hostname, port: self.port, inputStream: &self.istream, outputStream: &self.ostream)
self.istream!.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
self.ostream!.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
}
func getInputStream() -> InputStream {
return istream!
}
func getOutputStream() -> OutputStream {
return ostream!
}
func Connect() -> Void {
self.istream?.delegate = self
self.ostream?.delegate = self
istream!.open()
ostream!.open()
}
func DisConnect() -> Void {
istream!.close()
ostream!.close()
istreamopen = false
ostreamopen = false
}
func write(bytes: [UInt8]) {
ostream?.write(bytes, maxLength: (bytes).count)
}
func write(string: String) {
ostream?.write([UInt8](string.utf8), maxLength: ([UInt8](string.utf8)).count)
}
func read(bufferSize: Int) -> String {
var output = String()
var buffer = [UInt8](repeating: 0, count: bufferSize)
//while (self.istream?.hasBytesAvailable)! {
//print("HELLO")
let bytesRead: Int = self.istream!.read(&buffer, maxLength: buffer.count)
if bytesRead >= 0 {
output += NSString(bytes: UnsafePointer(buffer), length: bytesRead, encoding: String.Encoding.ascii.rawValue)! as String
} else {
output = "# Stream read() error"
}
//print(output)
//}
return output
}
func setDelegate(delegate: SocketDelegate) -> Void {
self.delegate = delegate
}
func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
//print("\(aStream) Stream!")
switch eventCode {
case Stream.Event.hasBytesAvailable:
delegate?.hasBytes(stream: aStream)
break;
case Stream.Event.errorOccurred:
//print("Stream error occurred: %@",aStream.streamError?.localizedDescription ?? "ERROR")
delegate?.error(stream: aStream)
case Stream.Event.openCompleted:
//print("\(aStream) -- \(self.istream) -- \(self.ostream)")
if (aStream == self.istream) {
self.istreamopen = true
//print("\(self.istream) Open")
} else if (aStream === self.ostream) {
self.ostreamopen = true
//print("\(self.ostream) Open")
}
delegate?.opened(stream: aStream)
break
case Stream.Event.endEncountered:
//print("Stream ended")
if (aStream === self.istream) {
self.istreamopen = false
} else if (aStream === self.ostream) {
self.ostreamopen = false
}
delegate?.closed(stream: aStream)
break
default:
delegate?.other(stream: aStream)
break
}
}
func isConnected() -> Bool {
return (istreamopen && ostreamopen)
}
}
最佳答案
看来不是连接失败了。这是 SSL 协商期间的初始写入。我将写入命令包装在 DispatchQueue 中,它似乎已经解决了这个问题。
func write(bytes: [UInt8]) {
DispatchQueue.global(qos: .background).async {
self.ostream?.write(bytes, maxLength: (bytes).count)
}
}
func write(string: String) {
DispatchQueue.global(qos: .background).async {
self.ostream?.write([UInt8](string.utf8), maxLength: ([UInt8](string.utf8)).count)
}
}
关于IOS UI 在套接字连接期间卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948055/
我使用下拉菜单提供一些不同的链接,但我希望这些链接在同一选项卡中打开,而不是在新选项卡中打开。这是我找到的代码,但我对 Javascript 非常缺乏知识 var urlmenu = docume
我对 javascript 不太了解。但我需要一个垂直菜单上的下拉菜单,它是纯 JavaScript,所以我从 W3 复制/粘贴脚本:https://www.w3schools.com/howto/t
我已经坐了 4 个小时,试图让我的导航显示下 zipper 接垂直,但它继续水平显示它们。我无法弄清楚为什么会发生这种情况或如何解决它。 如果有人能告诉我我做错了什么,我将不胜感激。我有一个潜移默化的
我正在尝试创建选项卡式 Accordion 样式下拉菜单。我使用 jQuery 有一段时间了,但无法使事件状态达到 100%。 我很确定这是我搞砸的 JS。 $('.service-button').
对于那些从未访问过 Dropbox 的人,这里是链接 https://www.dropbox.com/ 查看“登录”的下拉菜单链接。我如何创建这样的下 zipper 接? 最佳答案 这是 fiddle
我正在制作一个 Liferay 主题,但我在尝试设计导航菜单的样式时遇到了很多麻烦。我已经为那些没有像这样下拉的人改变了导航链接上的经典主题悬停功能: .aui #navigation .nav li
如果您将鼠标悬停在 li 上,则会出现一个下拉菜单。如果您将指针向下移至悬停时出现的 ul,我希望链接仍然带有下划线,直到您将箭头从 ul 或链接移开。这样你就知道当菜单下拉时你悬停在哪个菜单上。 知
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉菜单,但是当我单击第二个链接时,第一个下拉菜单不会关闭。 (所以如果用户点击第二个链接我想关闭下拉菜单) // main.js
我正在尝试制作一个导航下拉菜单(使用 Bootstrap 3),其中链接文本在同一行上有多个不同的对齐方式。 在下面的代码中,下拉列表 A 中的链接在 HTML 中有空格字符来对齐它们,但是空白被忽略
我希望有人能帮我解决这个 Bootstrap 问题,因为我很困惑。 有人要求我在底部垂直对齐图像和其中包含图像的链接。 我面临的问题是他们还希望链接在链接/图像组合上具有 pull-right,这会杀
我正在构建一个 Rails 应用程序,并希望指向我的类的每个实例的“显示”页面的链接显示在“索引”页面的下拉列表中。我目前正在使用带有 options_from_collection_for_sele
我有以下 Bootstrap3 导航菜单 ( fiddle here )。我想设置“突出显示”项及其子链接与下拉列表 1 和 2 链接不同的链接文本(和悬停)的样式。我还希望能够以不同于 Highli
我对导航栏中的下拉菜单有疑问。对于普通的导航链接(无下拉菜单),我将菜单文本放在 H3 中,但是当我尝试对下 zipper 接执行相同操作时,箭头不在标题旁边,而是在标题下方。我决定用 span 替换
我是一名优秀的程序员,十分优秀!