小编nos*_*nos的帖子

在gdb中逐字打印整个字符串

我在gdb中打印一个字符串(char*)

(gdb) p l
l=0x9aa1f48 "up2 129104596496602200 19 0 0 3 0 eth1 XX :001CB",'0' <repeats 12 times>, "DC"
Run Code Online (Sandbox Code Playgroud)

是否有设置p打印整个字符串,而不是填写"重复......".在它的同时 - 也扩展了字符串的默认可打印长度,p如果字符串很长,似乎会切断.

c debugging gdb

10
推荐指数
2
解决办法
9602
查看次数

调用bind()时AF_UNIX套接字的正确长度

bind()需要一段你给它的sockaddr结构.现在,对于unix套接字,使用了sockaddr_un

当你填写sun_path会员时,计算这个长度的正确方法是什么?我见过多种方法:

socklen_t len = sizeof(sockaddr_un);
socklen_t len = offsetof(sockaddr_un,sun_path) + strlen(addr.sun_path);
socklen_t len = offsetof(sockaddr_un,sun_path) + strlen(addr.sun_path) + 1;
socklen_t len = sizeof(sockaddr.sun_family  ) + strlen(addr.sun_path);
Run Code Online (Sandbox Code Playgroud)

甚至其他方法.是否可以采取sizeof(sockaddr_un) - 或者正确的方法是什么?

c unix sockets

9
推荐指数
2
解决办法
5886
查看次数

是否持有互斥锁调用pthread_cond_broadcast?

使用pthread_cond_t,我们必须关联一个互斥锁,当发信号通知我见过的代码时,例如

pthread_mutex_lock(&mutex);

//code that makes condition true

pthread_cond_broadcast(&cond);
pthread_mutex_unlock(&mutex);
Run Code Online (Sandbox Code Playgroud)

pthread_mutex_lock(&mutex);

//code that makes condition true

pthread_mutex_unlock(&mutex);
pthread_cond_broadcast(&cond);
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的方法?(有关系吗 ?)

c locking pthreads

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

为nUnit测试设置Visual Studio项目的最佳实践

人们如何为Visual Studio设置项目,以及如何引用可测试的应用程序?

现在我添加了一个单独的项目,为我的解决方案创建一个.dll,其中包含所有测试用例和引用nunit.framework,它还引用了VS.生成输出的Debug /文件夹中的主.exe文件.

但我不知道这是不是一个好主意 - 或者最佳实践是什么,谁都想分享他们的做法?

nunit unit-testing visual-studio

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

在ASP.NET MVC中使用MySQL的AccountController

在Visual Studio中创建默认的ASP.NET MVC项目会设置一个可以注册用户的基本项目.我将如何改变这个以使用MySQL服务器而不是SQLServer?

mysql authentication asp.net-mvc

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

tomcat中是否存在对于接收盐的JDBCRealm的支持?

我们目前正在使用tomcat 5.5,并希望在我们的JDBCRealm身份验证中添加一个salt.我想知道是否有任何现有的类或我们是否需要扩展JDBCRealm并编写我们自己的身份验证类?

我们的server.xml中有以下内容

<Realm className="org.apache.catalina.realm.JDBCRealm" ...more stuff… />
Run Code Online (Sandbox Code Playgroud)

但它看起来并不像这个类需要盐.

security tomcat jdbcrealm

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

printf格式的警告不适用于uint32_t类型的变量

我刚刚了解了C,我知道这是一个基本问题,但我无法弄清楚如何解决这个问题.例如,我有一行

printf("value :%d\n",var.value);
Run Code Online (Sandbox Code Playgroud)

格式不适合,因为它显示下面的错误

*格式'%d'需要类型'int',但参数3的类型为'uint32_t*'

我已经检查了cplusplus的参考:cplusplus print ref

但它没有明确说明如何打印类型为uint32_t*(同样uint16_t)的值.

任何解释都将非常感激.

c

7
推荐指数
2
解决办法
8629
查看次数

使用较旧的gcc __sync builtins进行原子获取/加载和设置/存储

我正在使用gcc 4.6的(供应商分支),并且需要对无符号整数进行4次基本原子操作

  • 原子增量
  • 原子减量
  • 原子集
  • 原子获得

.此gcc版本不支持较新的__atomix_XXX内置,只有__sync内置.

这意味着我可以执行以下操作:

#define ATOMIC_INC(ptr) __sync_fetch_and_add((ptr),1)
#define ATOMIC_DEC(ptr) __sync_fetch_and_sub((ptr),1)
#define ATOMIC_GET(ptr) __sync_fetch_and_add((ptr),0)
Run Code Online (Sandbox Code Playgroud)

但是,我找不到一种方法来实现一个#define ATOMIC_SET()原子设置变量的方法,有没有办法用gcc 4.6.x实现这个目的?

另外,有没有更好的方法来实现上述ATOMIC_GET()?从原子的角度看,生成的程序集看起来很好,尽管由于实际执行了添加操作,它是次优的.

编辑:有问题的架构是ARMv6,x86和x86_64.

c gcc

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

在Tomcat上部署JAX-WS Web服务

在注意到Java 6包含javax.xml.ws之后,我就能够创建一个独立的Web服务.我将如何在Tomcat 6中托管它?

java tomcat web-services jax-ws

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

如何使用sendto通过原始以太网套接字发送数据而不使用sockaddr_ll?

我正在开发一个项目,我们使用Enea OSE,这是一个实时嵌入式操作系统.我猜你们很多人都不熟悉这个操作系统,但我认为无论如何你都可以回答我的问题.我想使用接口"eth1"在2张卡之间发送原始以太网帧,这些接口通过以太网电缆(无交换机或任何东西)直接连接到另一个."eth1"接口未分配任何IP地址.

我可以简单地使用socket声明一个套接字

int s = socket(AF_INET, RAW_SOCKET, ...)
Run Code Online (Sandbox Code Playgroud)

然后我可以使用以下命令将套接字绑定到相应的设备接口:

setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, "eth1", 4);
Run Code Online (Sandbox Code Playgroud)

为了将数据从一张卡发送到另一张卡,我的计划是手动填写带有源和目标MAC地址的以太网缓冲区阵列.然后使用sendto(....)发送数据

但是sendto例程还需要一个带有信息的sockaddr结构:

  sendto(int sockfd, const void *buf, size_t len, int flags,
           const struct sockaddr *dest_addr, socklen_t addrlen);
Run Code Online (Sandbox Code Playgroud)

在我已经在互联网上找到的例子中使用SOCKADDR_IN当IP地址是已知的,sockaddr_ll的原始帧.但是,OSE不提供sockaddr_ll结构.但它提供了sockaddr我不知道如果我可以用于原始以太网帧?

struct sockaddr {
    unsigned short    sa_family;    // address family, AF_xxx
    char              sa_data[14];  // 14 bytes of protocol address
};
Run Code Online (Sandbox Code Playgroud)

我也尝试使用NULL,当调用sendto()时,对于sockaddr字段,发送失败.这让我想到了我的问题.我可以使用简单的sockaddr结构来填充目标MAC地址而不使用任何IP吗?那怎么样?(我没有看到任何显示此代码的代码).为什么我们甚至必须提供sockaddr结构?以太网数据缓冲区是否已包含此信息?最后,如果没有为网络设备分配IP地址,我是否正在努力实现?

我知道我想要做的事情看起来很奇怪,但有一个原因吧:)如果你能告诉我如何在不使用sockaddr_ll结构的情况下完成这项工作,我会很高兴的.

c sockets ose

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