C函数、网络编程

标签 c string network-programming

我有这个 C 函数。

void execMessage(int sockfd,void *structCHARMS, ClientData *client)
{
    ClientData *client_recv = (ClientData *) structCHARMS;

    client->local_addr=client_recv->local_addr;
    client->mode = client_recv->mode;

    char*msg;   
    CharmsMsg chmsg = {charms_msg_map[XTypes_CONFIG_PARAM].msg_code, client, 1184};
    msg = encode(&chmsg, "0.01");
    ssize_t n = 0;
    n = send(sockfd,msg,strlen(msg), 0);

}

它是从连接到 TCP 客户端的经典 TCP 服务器的主要函数中调用的。它创建一条消息(使用特定的函数编码)并将其发送到服务器。

问题是:当将此函数插入​​到 main() 的同一文件中时,它可以正常工作,但是当我将其插入到另一个文件中时,程序运行时出现“段错误错误” 。

有人可以帮助我吗?谢谢

最佳答案

正如之前提到的,您需要弄清楚程序到底在哪里出现了段错误。现在,您创建一个本地 char* 并将指针的地址传递给编码函数。您有该功能的代码吗?在我看来,您希望从函数返回一个指针,并在其中返回编码的 c 字符串的堆。发送后,您需要释放该内存,以免发生泄漏。

关于C函数、网络编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878539/

相关文章:

ruby-on-rails - Rails 运行程序出现段错误 (Rails 4.0.0 Ruby 2.2.2p95 CentOS7)

c - 为什么 Eclipse 索引一个不存在的预处理器宏的错误值?

c - 安全地从 struct sockaddr 转换为 struct sockaddr_storage

c# - NAT 在其表中保留 TCP 转换字段多长时间?

c - 打印列表 : 1 2 3 4 5 6 7 8 9 = 1 8 3 6 5 4 7 2 9

c++ - 如何将 char 数组定义为常量?

Php echo 字符串中同时使用了 "and ' 的地方?

Javascript - 排序字母数字组合

python - 使用分隔符将字符串/字符数组连接成单个字符串[不使用理解、映射等]

java - Java中文件传输的FTP客户端服务器模型