小编Éti*_*nne的帖子

C 套接字编程:connect() 挂起

大家好,我要扯头发了。我有一个尝试连接到服务器的客户端,使用gethostbyname(), socket(), bind(),一切似乎都很好,但是当尝试它时,connect()它只是挂在那里,服务器看不到来自客户端的任何内容。我知道服务器可以正常工作,因为另一个客户端(也在 C 语言中)可以正常连接。是什么导致服务器看不到此传入连接?我已经无计可施了。这两个不同的客户也非常相似,所以我更加迷失了。

    if (argc == 2)  {
    host = argv[1];         // server address
}
else    {
    printf("plz read the manual\n");
    exit(1);
}

hserver = gethostbyname(host);
if (hserver)    {
    printf("host found: %p\n", hserver);
    printf("host found: %s\n", hserver->h_name );
}
else    {
    printf("host not found\n");
    exit(1);
}

bzero((char * ) &server_address, sizeof(server_address)); // copy zeroes into string
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(hserver->h_addr);
server_address.sin_port = htons(SERVER_PORT);

bzero((char * ) &client_address, sizeof(client_address)); // copy …
Run Code Online (Sandbox Code Playgroud)

c connection client-server

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

警告:无法连接到 agentx 主代理 ([NIL])

我已经在我的系统上安装了 net-snmp5.7.2,我已经为我的应用程序编写了我的 app_agent.conf 并且

agentXSocket    udp:X.X.X.X:1610
Run Code Online (Sandbox Code Playgroud)

并导出 SNMPCONFIGPATH=path_to_app_agent.conf

我还在 /usr/etc/snmp/snmp.conf 中写了 snmpd.conf

trap2sink  X.X.X.Y 
agentXSocket    udp:X.X.X.X:1610
Run Code Online (Sandbox Code Playgroud)

我的 /etc/snmp/ 和 /var/net-snmp/ 中还有两个 snmpd.conf

来自 /etc/snmp 的配置:

com2sec notConfigUser  default       public
com2sec notConfigUser  v1            notConfigUser
com2sec notConfigUser  v1            notConfigUser
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
access notConfigGroup "" any noauth exact systemview none none 
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
Run Code Online (Sandbox Code Playgroud)

来自 /var/net-snmp 的配置:

   setserialno 1322276014
   ifXTable .1 14:0 18:0x $
   ifXTable .2 14:0 18:0x $
   ifXTable .3 14:0 18:0x $
   engineBoots 14
   oldEngineID …
Run Code Online (Sandbox Code Playgroud)

snmp net-snmp

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

复合语句是否在C中左值(或右值)?

当我container_of在Linux内核中检查宏的定义时,我看到一个复合语句作为宏定义,

#define container_of(ptr, type, member) ({                      \
    const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
    (type *)( (char *)__mptr - offsetof(type,member) );})
Run Code Online (Sandbox Code Playgroud)

然而,我脑海中不明确的问题是哪个陈述被视为右值.显然,最后一个语句的结果用作右值,但为什么呢?

(type *)( (char *)__mptr - offsetof(type,member) );
Run Code Online (Sandbox Code Playgroud)

例如,下面的代码示例是否合法?

int g_count = 0xFF;

#define GLOBAL_COUNT do {g_count;} while(0)

int main(int argc, char *argv[])
{
    int local;
    local = GLOBAL_COUNT;
    local = 0;
    GLOBAL_COUNT = local;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

复合语句中变量的赋值规则是什么?

c compound-assignment

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

I2C从机 - 时钟延长

你们知道如何为I2C奴隶启用时钟延长吗?

将此函数I2C_StretchClockCmd(I2C2, ENABLE)放入I2C初始化是否足够?

时钟拉伸如何正常工作?

stm32 i2c

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

SREC 或 Intel HEX 等十六进制格式的优势

我想问一下是否有人可以向我解释使用十六进制格式(例如由摩托罗拉 S-Record 或英特尔十六进制)比使用直接二进制映像(如固件或内存转储)的好处?

我知道有一些关于二进制文件的元信息很有用,比如使用的内存区域,数据完整性的校验和等等……但是,实际数据大小加倍的事实,因为一切都将以十六进制 ASCII 格式保存代表让我感到困惑。

使用十六进制 ASCII 表示的原因仅仅是可移植性,以防止具有不同字节字节序的系统出现问题还是有其他好处?

我为这个主题找到了许多关于如何将二进制转换为十六进制和向后转换或某些格式的规范的教程,但没有关于优缺点的信息。

memory-dump hexdump binary-data firmware bootloader

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

如何开始学习linux设备驱动程序开发?(仅适用于Windows)

我想学习Linux设备驱动程序开发.

正面:

  1. 我在WinCE上开发了小型驱动程序,并从应用程序开始工作SPI,i2c接口,即打开,读取和写入驱动程序.
  2. 我擅长操作系统和数据结构.

劣势:

  1. 我从未在Linux上工作过.
  2. 我的背景不是嵌入式系统.

我该如何继续学习Linux设备驱动程序开发?

编辑:任何书籍参考将是值得感谢的

linux-device-driver linux-kernel

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

如何将 gst-rtsp-server 与自己的管道一起使用?

我正在编写 gstreamer 应用程序,需要通过 rtsp 传输输出音频/视频流。但在gst-rtsp-server示例中,我factory仅通过gst-launch语法建立了创作:

factory = gst_rtsp_media_factory_new ();  
gst_rtsp_media_factory_set_launch (factory,
  "( appsrc name=mysrc ! videoconvert ! x264enc ! rtph264pay name=pay0 pt=96 )");
Run Code Online (Sandbox Code Playgroud)

是否可以将gst-rtsp-server元素连接到我的管道?

c c++ rtsp gstreamer

3
推荐指数
2
解决办法
3404
查看次数

“multipart/form-data”POST 请求实际上是否应该包含带有上传图像数据的字符串?

我正在为一个 Web 应用程序创建一些性能测试,该应用程序发送的请求类型与浏览器发送到我们的服务器的类型相同。其中一个请求是上传图像的 POST。我查看了这个问题,看起来图像文件的实际内容应该位于请求正文内。然而,当我在 Chrome 中使用 F12 开发工具来检查浏览器在请求中发送的内容时,它看起来像这样:

  ------WebKitFormBoundaryjHN86sGb89n2HUZOT
  Content-Disposition: form-data; name="profileImg[]"; filename="bmp.bmp"
  Content-Type: image/bmp


  ------WebKitFormBoundaryjHN86sGb89n2HUZOT--
Run Code Online (Sandbox Code Playgroud)

我期望看到文件内容的空间是空白的。我期待看到一些看似随机的字符串,代表图像文件的内容。请求中也没有图像的路径,只有文件名,所以我无法准确理解如何上传文件?Chrome 是否只是向我隐藏了数据?

post http google-chrome-devtools

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

在Python中附加到字符串的正确方法

我读过这个回复,它解释了 CPython 有一个优化,可以在使用a = a + bor附加到字符串时执行就地附加,无需复制a += b。我还阅读了这个 PEP8 建议:

\n
\n

代码的编写方式不应损害其他 Python 实现(PyPy、Jython、IronPython、Cython、Psyco 等)。例如,不要依赖 CPython\xe2\x80\x99 对形式 a += b 或 a = a + b 中的语句进行就地字符串连接的高效实现。即使在 CPython 中,这种优化也是脆弱的(它仅适用于某些类型),并且在不使用引用计数的实现中根本不存在。在库的性能敏感部分,应使用\'\'.join() 形式。这将确保在各种实现中以线性时间进行串联。

\n
\n

因此,如果我理解正确,a += b + c正确的方法是调用a = \'\'.join([a, b, c])?

\n

但是为什么这个形式join比本例中的形式慢得多+=(在loop1中我故意使用a = a + b + c以避免触发CPython优化)?

\n
import os\nimport time\n\nif __name__ == "__main__":\n    start_time = time.time()\n    print("begin: %s " …
Run Code Online (Sandbox Code Playgroud)

python

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

用nanosleep替换usleep

我想在我的代码中用nanosleep替换过时的usleep函数:

static int timediff( struct timeval *large, struct timeval *small )
{
        return (   ( ( large->tv_sec * 1000 * 1000 ) + large->tv_usec )
                 - ( ( small->tv_sec * 1000 * 1000 ) + small->tv_usec ) );
}

struct performance_s
{
        struct timeval acquired_input;
};

performance_t *performance_new( int fieldtimeus )
{
     performance_t *perf = malloc( sizeof( performance_t ) );
     if( !perf ) return 0;

     gettimeofday( &perf->acquired_input, 0 );

     return perf;
}

performance_t *perf = 0;

int performance_get_usecs_since_frame_acquired( performance_t *perf …
Run Code Online (Sandbox Code Playgroud)

c usleep

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