小编use*_*718的帖子

启用非阻塞套接字

我有一个用C/C++编写的服务器.我为连接设置了包装器,如下所示:

    //START WRAPPER
    void Server::init_address(int port)
    {
memset(&(this->serv_addr), 0, sizeof(this->serv_addr));
this->serv_addr.sin_family = AF_INET;
this->serv_addr.sin_port = htons(port);
this->serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    }


    int Server::w_socket()
    {
int retv;
retv = socket(PF_INET, SOCK_STREAM, 0);
//FIXME
//fcntl(retv, F_SETFL, O_NONBLOCK);
if(retv == -1)
{
    std::string err_msg(strerror(errno));
    err_msg = "[socket] " + err_msg;
    throw err_msg;
}
else
{
    int reuse_opt = 1;

    if(setsockopt(retv, SOL_SOCKET, SO_REUSEADDR, &reuse_opt, sizeof(int))==-1)
    {
        perror("setsockopt error");
        exit(1);
    }
    return retv;
}
    }

    void Server::w_bind()
    {
int retv;
retv = bind(this->sock_fd,
        (struct sockaddr*) &(this->serv_addr), …
Run Code Online (Sandbox Code Playgroud)

c sockets nonblocking asyncsocket

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

Prolog中的列表列表

我对Prolog中的列表列表有疑问.例如,我有这些事实:

fact(1, 'hello').
fact(2,  'boy').
fact(3, 'hello').
fact(4, 'girl').
Run Code Online (Sandbox Code Playgroud)

以及由(Character,Id)这样的对组成的列表:

list([b, 1, b, 2, g, 3, g, 4]).
Run Code Online (Sandbox Code Playgroud)

我的目标是返回这样的列表列表:

newList(['hello', boy'], ['hello', 'girl']).
Run Code Online (Sandbox Code Playgroud)

编辑:第一个列表必须分成更多共享相同字符的列表

list([b, 1, b, 2], [g, 3, g, 4]).
Run Code Online (Sandbox Code Playgroud)

那么,应该删除角色

list([1, 2], [3, 4]).
Run Code Online (Sandbox Code Playgroud)

并用相应的原子替换id,如下所示:

list(['hello', 'boy'], ['hello', 'girl']).
Run Code Online (Sandbox Code Playgroud)

prolog

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

JAVA ldap错误NO_OBJECT

我更改密码或更新用户信息时遇到此错误.我尝试了很多彼此相似的代码,但我仍然遇到了错误.这个问题可能是一个糟糕的CN定义,但在我的情况下应该是正确的,我真的很难过,因为我无法面对这个问题.

  • 通过LDAP连接到服务器:好的.
  • SSL和cacerts:好的.
  • 通过代码添加用户:确定.
  • 获取所有用户信息:好的.
  • 更新用户的信息:.

这是一个简单的代码,我尝试更新用户的信息(描述),但没有成功.用户"蝙蝠侠"显然存在于AD中.

public class ADConnection {

DirContext ctx = null;
String baseName = ",OU=SoftwareV3,OU=SOFTWARE,DC=SOFTWAREDEV,DC=LOCAL";
String serverIP = "192.168.10.45";
boolean ssl = true;

public ADConnection() {
    try {
        Hashtable ldapEnv = new Hashtable(); 
        ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY,             "com.sun.jndi.ldap.LdapCtxFactory"); 
        if(ssl==true)
        {
            ldapEnv.put(Context.PROVIDER_URL, "ldaps://192.168.10.45:636/dc=softwaredev,dc=local");
            ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
        }
        else
        {
            ldapEnv.put(Context.PROVIDER_URL, "ldap://192.168.10.45:389/dc=softwaredev,dc=local");
        }
        ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); 
        ldapEnv.put(Context.SECURITY_PRINCIPAL, new String("softwaredev" + "\\" +     "superadmin"));
        ldapEnv.put(Context.SECURITY_CREDENTIALS, "passw0rd");  
        ctx = new InitialDirContext(ldapEnv); 
    } 
    catch (Exception e) …
Run Code Online (Sandbox Code Playgroud)

java ldap

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

Java - 如何处理参数传递的空值?

我写了这个简单的函数:

private String getOperatorForCardinality(String op)
{
    String operator ="";
    if(op!=null)
    {
        if(op.equals(">="))
        {
            operator = ">=";
        }
        else if (op.equals("<="))
        {
            operator = "<=";
        }
    }
    else
    {
        operator = "empty";
    }

    return operator;
}
Run Code Online (Sandbox Code Playgroud)

它返回一个字符串。

在主程序中我调用这个函数,当参数为null时,编译器显示NullPointerException错误。原因很清楚,但我不知道如何处理参数传递时的空值。

java nullpointerexception

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