标签: protocols

C++ 的 RDP 协议

我正在寻找通过远程桌面连接连接到另一台计算机并检查连接是否成功的代码。

我记录了数据包,发现有一个银河系的数据包,所以我想知道是否有一些简单的代码。

c++ connection tcp remote-desktop protocols

1
推荐指数
1
解决办法
7590
查看次数

如何通过tcpdump检测CDP

我想向您寻求帮助:有人知道如何通过 tcpdump 检测思科发现协议吗?

目前我正在使用以下命令,但我不确定:

tcpdump -i eth0 -nn "ether[20:2]==0x2000"
Run Code Online (Sandbox Code Playgroud)

一些提示值得赞赏。谢谢 ...

恰克

cisco protocols tcpdump discovery

1
推荐指数
1
解决办法
1万
查看次数

是否可以通过 telnet 执行 SSL 握手?

我正在阅读有关 SSL 工作原理的信息,并尝试与 google pop3 server 执行握手pop.gmail.com 995我在那里找到了客户端问候消息的示例。所以,我连接到 gmail pop 3 服务器

telnet pop.gmail.com 995
Run Code Online (Sandbox Code Playgroud)

没关系。现在我可以向服务器发送消息了。据我了解,我需要做的第一件事是发送客户端问候消息。因此,我输入以下行(\r\n为了简化阅读,我将在标记后换行):

ClientVersion 3,1\r\nClientRandom[32]\r\n
SessionID: None (new session)\r\n
Suggested Cipher Suites:\r\n
  TLS_RSA_WITH_3DES_EDE_CBC_SHA\r\n
  TLS_RSA_WITH_DES_CBC_SHA\r\n
Suggested Compression Algorithm: NONE
Run Code Online (Sandbox Code Playgroud)

按 Enter 键并接收消息

Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

怎么了?我应该收到服务器问候消息吗?我要发送什么才能收到它?

ssl networking protocols telnet

1
推荐指数
1
解决办法
2888
查看次数

协议可选方法在未实现时会崩溃

我正在使用带有一些可选方法的协议

#import <UIKit/UIKit.h>
@class TextViewTableViewCell;

@protocol TextViewTableViewCellDelegate

@optional
- (void)textViewDidChange:(UITextView *)textView forIndexPath:(NSIndexPath *)indexPath;
- (void)textViewTableViewCellDoneTyping:(UITextView *)textView forIndexPath:(NSIndexPath *)indexPath;
- (BOOL)shouldChangeEditTextCellText:(TextViewTableViewCell *)cell newText:(NSString *)newText;

@end

@interface TextViewTableViewCell : UITableViewCell <UITextViewDelegate>
Run Code Online (Sandbox Code Playgroud)

但如果我使用我实现此协议的类中的任何函数,它就会崩溃

我不知道为什么会发生这种情况。据我所知,可选方法并不是强制使用的。

当调用委托函数并且我们调用协议方法时,它会导致该方法崩溃

- (void)textViewDidChange:(UITextView *)textView
{
[self.delegate textViewDidChange:self.textView forIndexPath:self.indexPath];
}
Run Code Online (Sandbox Code Playgroud)

protocols objective-c ios

1
推荐指数
1
解决办法
416
查看次数

无法分配给类型的不可变表达式...但使用协议

我知道有很多问题都是这样开始的。但是,这是我的代码片段:

protocol AProt { var a:Int { get set } }
protocol BProt { var b:Int { get set } }
protocol CProt { var c:Int { get set } }
class A:AProt, CProt { var a = 1;  var c = 3 }
class B:BProt, CProt { var b = 2; var c = 30 }

var a = A()
var b = B()
var c = a as CProt // works
c.c = 123
a = c as! …
Run Code Online (Sandbox Code Playgroud)

protocols swift

1
推荐指数
1
解决办法
651
查看次数

swift4中hashable协议有什么用?

请解释如何在 swift 中使用哈希协议。Apple 将 hashable 定义为“一种提供整数和哈希值的类型”。好的,但什么是哈希值?

protocols hashable swift

1
推荐指数
1
解决办法
2846
查看次数

我何时以及为什么会在 Swift 中使用协议?

所以我遇到了协议的主题,我在互联网上搜索了很多答案,但我找不到一个,至少一个解决了我的问题。

所以我明白协议是方法、属性等的“蓝图”,它可以在类或结构中实现,并且它需要符合其要求等,但为什么要使用一个?

我的意思是你也可以在结构本身内创建一个函数。编写协议似乎有点麻烦,然后为了实现所述协议,这次您必须使用更多代码再次编写所有要求。

人们使用协议有什么特别的原因吗?是为了您的代码安全还是出于其他原因?

例如:

在 swift 中,你有 CustomStringConvertible 协议,它有一个必需的计算属性来控制如何将自定义类型表示为可打印的 String 值,但你也可以在你的类中创建一个函数来解决这个问题。您甚至可以在不实现此协议的情况下计算出与此协议相同的属性。

因此,如果有人可以对这个主题有所了解,那就太好了。

先感谢您!

protocols swift swift-protocols customstringconvertible

1
推荐指数
1
解决办法
2431
查看次数

自定义协议(通过 Windows 注册表)在本地文件夹和默认软件中打开文件

请阅读下面我的回答

通过在 Windows 注册表中定义自定义 URI 方案,单击 HTML 链接(在 chrome 中)时,我想在其默认软件中打开本地文件。我为注册表规则定义和我使用的链接尝试了许多不同的语法。我的默认 .reg 文件如下所示:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\test]
"URL Protocol"=""
@="URL:test Protocol"
"DefaultIcon"="\"C:\\Windows\\system32\\notepad.exe\",1"

[HKEY_CLASSES_ROOT\test\shell]

[HKEY_CLASSES_ROOT\test\shell\open]

[HKEY_CLASSES_ROOT\test\shell\open\command]
@="\"C:\\Windows\\system32\\notepad.exe\" \"%1\""
Run Code Online (Sandbox Code Playgroud)

我已经尝试了我能找到的 %1, %*, "%1" "%2" 的每个例子......现在我只是尝试使用记事本,尽管最终我想使用 explorer.exe打开指定类型文件的默认软件。

我的 HTML 文件是:

<a href="test:C:test.txt">Open</a>
Run Code Online (Sandbox Code Playgroud)

我试过 test://C:[...]、test:///C:[...],并在文件路径中使用斜杠和反斜杠。

使用上述 2 个版本,记事本打开,但我收到“文件名、目录名或卷标语法不正确”。(我将我的文件放在 C 驱动器根目录中以确保避免使用任何特殊字符)

另外,如果我定义文件的直接路径而不是参数字符串:@="\"C:\Windows\explorer.exe\" \"C:\test.txt\"" ,文件打开没有任何问题.

我究竟做错了什么 ?有没有办法查看作为参数接收的字符串?

更新 我修改了注册表项以使用回显命令调用一个简单的批处理文件(“C:\test.bat”%1)来查看接收到的参数(回显 %1 暂停)。默认情况下传递整个 URI(例如: "test:C:\test.txt" )。我发现如果我在方案后面放一个逗号,批处理文件会收到 2 个参数:%1="test:" & %2="C:\test.txt"。但是注册表项值仍然需要有“%1”...

“%2”在进入批处理文件之前不包含任何内容。很遗憾,我不能直接调用 '"app.exe" %2' 并且需要从 .bat 调用它,如果找到解决方案,我会更新。

windows registry protocols local url-scheme

1
推荐指数
1
解决办法
1811
查看次数

符合带有关联值的类型的协议

我有以下片段:

protocol MyProtocol: Identifiable where ID == UUID {
    var id: UUID { get }
}


var test: [MyProtocol] = []
Run Code Online (Sandbox Code Playgroud)

协议“MyProtocol”只能用作通用约束,因为它具有 Self 或关联类型要求

为什么这不起作用?不应该where ID == UUID消除错误所涉及的歧义吗?我在这里错过了什么吗?

我认为这个问题类似于这个问题:Usage of protocols as array types and function parameters in swift

但是,我会认为添加where ID == UUID应该可以解决问题?为什么不是这样?

谢谢!

编辑

因此,在试验SwiftUI和构建数据模型时出现了这个问题。我一直将类用于任何类型的数据模型,但似乎SwiftUI想让您尽可能频繁地使用结构(我仍然不知道这在现实中是如何可能的,但这就是我尝试使用它的原因)。

在这种特殊情况下,我尝试让管理器包含所有符合MyProtocol. 例如:

protocol MyProtocol: Identifiable where ID == UUID {
    var id: UUID { get }
}

struct A: MyProtocol { // First …
Run Code Online (Sandbox Code Playgroud)

protocols swift

1
推荐指数
1
解决办法
100
查看次数

属性别名(可以说是 Identifiable 最优雅的解决方案)

如果我想遵守协议并且协议定义了我不喜欢的属性名称怎么办?
例如:

struct Currency: Identifiable {
    let id: String
    let rate: Double
}
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,为“id”属性提供一个更有意义的名称会很棒。所以我希望能够做这样的事情:

struct Currency: Identifiable {
    propertyalias iso = id
    let iso: String
    let rate: Double
}
Run Code Online (Sandbox Code Playgroud)

protocols swift

1
推荐指数
1
解决办法
96
查看次数