小编nfl*_*cco的帖子

Netty IdleStateHandler的麻烦 - 我是以错误的方式测试的吗?

我有一个玩具Netty服务器,我试图在他们的频道上没有发生任何事情时向客户发送心跳消息.我通过telnet到服务器,写一条消息然后不发送任何东西来测试这个,但我没有听到任何声音!

安慰:

>>telnet localhost 6969
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
>>foo
Did you say 'foo'?
Run Code Online (Sandbox Code Playgroud)

MyPipelineFactory.java

public class MyPipelineFactory implements ChannelPipelineFactory {
    private final Timer timer;
    private static final ChannelHandler stringDecoder = new StringDecoder();
    private static final ChannelHandler stringEncoder = new StringEncoder();
    private final ChannelHandler idleStateHandler;

    public MyPipelineFactory(Timer t) {
        this.timer = t;
        this.idleStateHandler = new IdleStateHandler(timer, 5, 5, 5);
    }

    public ChannelPipeline getPipeline() {
        // create default pipeline from static method
        ChannelPipeline pipeline = Channels.pipeline(); …
Run Code Online (Sandbox Code Playgroud)

java jboss network-programming heartbeat netty

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

Apple 推送通知、注销应用程序和删除应用程序问题/解决方案

除了一种情况外,推送通知对我来说非常有用。我们正在开发的应用程序需要您登录/注销,因此当您登录时,服务器会向您发送通知,而当您未登录时,它不应该。

如果用户在登录时删除了该应用程序,则服务器不知道该用户已删除该应用程序。如果应用程序保持删除状态并且服务器尝试发送通知,则这不是问题 - 服务器端的 APNS 反馈机制捕获到并关闭会话。

如果用户重新安装应用程序怎么办?从服务器的角度来看,它们仍处于登录状态。在应用程序启动时,您可以向服务器发送注销消息。如果您不启动应用程序怎么办?该应用程序仍会看到通知进来!

这是我不应该担心的愚蠢边缘情况吗?或者有没有公认的方法来解决这个问题。

iphone push-notification apple-push-notifications ios

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

在Ubuntu和OSX上编译和链接OpenSSL

尝试1,香草链接到图书馆

我正在尝试使用修补版本的OpenSSL(因此DTLS更易于使用).OpenSSL在

/usr/local/openssl-1.0.1c
Run Code Online (Sandbox Code Playgroud)

./include/openssl子文件夹有大量的头文件(我认为应该这样):

lrwxrwxrwx 1 root root   22 Dec 25 05:49 aes.h -> ../../crypto/aes/aes.h
lrwxrwxrwx 1 root root   24 Dec 25 05:49 asn1.h -> ../../crypto/asn1/asn1.h
lrwxrwxrwx 1 root root   28 Dec 25 05:49 asn1_mac.h -> ../../crypto/asn1/asn1_mac.h
...
Run Code Online (Sandbox Code Playgroud)

GCC链接到include文件夹并给我一个错误 - 它无法找到SSL.我或多或少地和其他人一样使用它.这适用于OSX(10.6),但不适用于Ubuntu:

~$ gcc -L/usr/local/openssl-1.0.1c/include -lssl -lcrypto  -o server server.c
server.c:20:25: fatal error: openssl/ssl.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

尝试2,/ usr/include中的库的符号链接

那么,我尝试在/ usr/include中创建一个指向OpenSSL的符号链接:

sudo ln -s /usr/local/openssl-1.0.1c/include/openssl /usr/include/openssl
Run Code Online (Sandbox Code Playgroud)

并重新尝试编译:

~$ gcc -L/usr/local/openssl-1.0.1c/include -lssl -lcrypto  -o server server.c …
Run Code Online (Sandbox Code Playgroud)

c linux macos gcc

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

CocoaAsyncSocket的读写代理不会触发和代码组织

我正在尝试使用cocoaasyncsocket库附带的echo服务器示例的修改版本执行以下操作:

1)打开与作为服务器的python脚本的连接
2)发送数据//工作,但委托不激活
3)接收数据//委托不激活
4)断开//不断开,显然还在我的帖子里

目前,我在didFinishLaunchingWithOptions委托中打开一个连接,然后尝试在didConnectToHost委托中发送数据.然后,我尝试读取从客户端返回的数据,然后断开连接.

我能够打开一个连接并发送数据(服务器验证为收到),但didWriteDataWithTag委托永远不会触发.但是,服务器接收数据.然后服务器会激活一些数据,但didReadData也不会触发.

除了读/写代理没有触发的事实,似乎我组织我的代码的方式不对,但我不确定这在事件驱动的系统中看起来如何与运行循环相反(我'在事件驱动的东西+网络新手.如果我的一系列行动的各自的完成是由他们的代表触发的,那么代表们是否应该分享某种消息 - 即我们收到了"xxx"消息,请回写"yyy"?我更喜欢有一个功能来管理所有这些.这样做有规范的方法吗?

IPhoneConnectTestAppDelegate.m(片段)

- (void)localConnect {
    NSError *error = nil;
    if (![asyncSocket connectToHost:@"localhost" onPort:5000 error:&error]) {
        DDLogError(@"Error connecting: %@", error);
    }
}

- (void)disconnect {
    [asyncSocket setDelegate:nil];
    [asyncSocket disconnect];
    [asyncSocket release];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Setup our socket (GCDAsyncSocket).
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    asyncSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:mainQueue];

    [self localConnect];

    // Add the view controller's view to the window and display.
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
} …
Run Code Online (Sandbox Code Playgroud)

cocoa tcp objective-c asyncsocket

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

将现有的活动手势识别器传递给模式视图控制器

我想长按启动模式视图,然后在取消长按时关闭模式视图。我该怎么做呢?

  • 我尝试将longPressRecognizer传递给模式视图并将其设置为委托,但这没有用。
  • 我尝试了一些更简单的方法-检测touchesEnded,这在模式视图中意味着触摸结束,但也不会触发。

有没有办法告诉模态视图一个手势已经开始;我想让您识别此手势或触摸的结束/取消吗?


ViewController.swift

import UIKit

class ViewController: UIViewController, UIGestureRecognizerDelegate {
    var buttonView:UIView!
    var longPressRecognizer:UILongPressGestureRecognizer!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "longPressed:")
        self.longPressRecognizer.delegate = self
        self.view.addGestureRecognizer(self.longPressRecognizer)

        // Add a button
        buttonView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 100))
        buttonView.userInteractionEnabled = true;
        buttonView.backgroundColor = UIColor.grayColor()
        self.view.addSubview(buttonView)
    }

    func longPressed(recognizer: UILongPressGestureRecognizer) {
        let point: CGPoint = recognizer.locationInView(self.view)
        if let pressedView = …
Run Code Online (Sandbox Code Playgroud)

uigesturerecognizer ios

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

维基百科搜索结果与api(opensearch)和普通网络界面不同?

对于文本查询"major + histocompatibility + complex + class + II + antigens",我使用web和api接口得到不同的结果.有没有办法使用api获得与Web界面相同的结果?

使用Web界面查询:

http://en.wikipedia.org/w/api.php?action=opensearch&search=major+histocompatibility+complex+class+II+antigens

用api查询:

http://en.wikipedia.org/w/api.php?action=opensearch&search=major+histocompatibility+complex+class+II+antigens

我查看了api参考(http://en.wikipedia.org/w/api.php)和关于SO的问题(http://stackoverflow.com/questions/1397938/is-there-any-api-in- java-to-access-wikipedia-data)但是他们都没有处理这个问题.opensearch api是否使用不同的搜索引擎?

api wikipedia wikimedia opensearch

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

如何更新Kubernetes部署+服务

我已经整合了一个简单的集群,其中包含几个可以很好地交互的部署,dns可以工作等等.但是,由于我正在使用部署,而且我有一些我在文档中找不到的问题.

  • 如何使用部署文件的新副本非破坏性地更新部署?我有编辑和替换,但我真的想直接传入文件的更改字段(版本,图像,端口等)

  • 将部署作为服务公开的首选方法是什么?有一个独立的文件,有一个暴露命令......我还应该考虑其他什么?是否可以将服务捆绑到部署文件中?

deployment kubernetes

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

UITextField:开始输入时,文本字段反弹,然后反弹

我也用UITextView看过这个.显然,我遗漏了一些非常基本的东西.

我试过: - 将textsize设置为small - UITextField:设置1行,不调整大小 - 删除移动texfield的功能

import UIKit

class XViewController: UIViewController, UITextFieldDelegate, UIGestureRecognizerDelegate {

    // UI elements
    let cancelButton = UIButton()
    let okButton = UIButton()
    var image:UIImage?
    var previewImageView:UIImageView = UIImageView()
    let textField = UITextField()
    let tapGestureRecognizer = UITapGestureRecognizer()
    let textFieldTypingPositionY:CGFloat = 200
    var textFieldActualPositionY:CGFloat!
    let textFieldHeight:CGFloat = 40

    var draggingTextField:Bool = false

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        setupTextField()
    }

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString text: String) …
Run Code Online (Sandbox Code Playgroud)

uitextfield uitextview ios

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

passport.js本地策略 - 使用用户名登录,使用令牌验证以后的请求

我使用本地策略遇到了passport.js的问题.我有两个具体问题:

  1. 对于最基本的案例,我没有获得持久化会话来使用示例代码(见下文).
  2. 我想要无会话.对于最基本的情况,在登录时,我将传递一个用户名+密码,为我提供会话令牌,在常规请求中我将使用此会话令牌哈希与其他一些东西进行身份验证.这很容易用护照吗?看起来护照在这种情况下提供的并不多,而且制作我自己的解决方案更容易 - 只需使用标准检查登录/注销,然后使用中间件取消请求令牌以验证请求.容易吃?

问题1:

使用库中的参考代码:

https://github.com/jaredhanson/passport-local/blob/master/examples/login/app.js

我做了一系列命令来显示已登出和已登录:

A.支票/账户,未登录

curl -v localhost:3000/account
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,我得到了一个重定向到/ login

<p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>
Run Code Online (Sandbox Code Playgroud)

B.登录

curl -v -d "username=bob&password=secret" http://127.0.0.1:3000/login
Run Code Online (Sandbox Code Playgroud)

也如预期的那样,我得到一个重定向到/

<p>Moved Temporarily. Redirecting to <a href="http://127.0.0.1:3000/">http://127.0.0.1:3000/</a></p>
Run Code Online (Sandbox Code Playgroud)

C.检查/帐户,登录

curl -v localhost:3000/account
Run Code Online (Sandbox Code Playgroud)

我勒个去???

<p>Moved Temporarily. Redirecting to <a href="http://localhost:9292/login">http://localhost:3000/login</a></p>
Run Code Online (Sandbox Code Playgroud)

node.js passport.js

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

OpenSSL识别Cookie,以在多个线程中使用DTLS会话/连接验证回调

我在多线程服务器(每个线程的连接)中的cookie生成/验证回调有一些麻烦。据我所知,DTLS东西需要这些回调。我担心的是示例代码对cookie使用了全局变量,如果有很多传入的连接,那么我宁愿使用cookie和连接的哈希。

我有两个问题:

  1. 我应该用这种方式还是有一种更好,更轻松的OpenSSL方式?
  2. 我该如何识别属于特定连接的回调/ cookie?

关于(2),回调(见下文)发生的线程与连接不同,因此我不能将线程ID用作哈希键。回调具有SSL *参数,我敢打赌有某种方法可以从中获取唯一的会话/连接ID,但我不知道如何获取它。我看了看文档,但没有看到任何使用SSL *对象并提供唯一编号的东西,至少从我所知道的方法名称来看。给定这些回调传递的参数后,用连接标识唯一cookie的最佳方法是什么?

我正在根据Robin Seggelmann的示例编写代码。我的东西在这里


2个全局变量:

unsigned char cookie_secret[COOKIE_SECRET_LENGTH];
int cookie_initialized=0;
Run Code Online (Sandbox Code Playgroud)

2个回调使用以下变量:

int generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len) {
    ...
    /* Initialize a random secret */
    if (!cookie_initialized) {
        if (!RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH))
            ...
Run Code Online (Sandbox Code Playgroud)

int verify_cookie(SSL *ssl, unsigned char *cookie, unsigned int cookie_len) {
    ...
    /* If secret isn't initialized yet, the cookie can't be valid */
    if (!cookie_initialized) return 0;
Run Code Online (Sandbox Code Playgroud)

主服务器循环设置这些回调,并为每个客户端连接打开一个新线程:

void start_server(int port, char …
Run Code Online (Sandbox Code Playgroud)

c multithreading openssl callback

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