c - C语言中的DCCP套接字编程

标签 c sockets dccp

我试图在 c 中为 DCCP 协议(protocol)创建套接字,它符合错误但是当我运行程序时我得到错误“sendto: Broken pipe”

我已经包含了 necesseray header 定义。

#define SOCK_DCCP 6 #define IPPROTO_DCCP 33 #define SOL_DCCP 269

在我想创建套接字的函数中

int dccp_sockfd,port_num,addr_len,yes = 1;

struct sockaddr_in PMU_addr,their_addr;

struct Lower_Layer_Details *temp_pmu = (struct Lower_Layer_Details *) temp;

unsigned char *dccp_BUF,*ptr,length[2];

unsigned int flen;

uint16_t cal_crc,frame_crc;

port_num = temp_pmu->port;

struct Lower_Layer_Details *t ;


if ((dccp_sockfd = socket(AF_INET, SOCK_DCCP, IPPROTO_DCCP)) == -1) {
    perror("socket");
    exit(1);
}

if (setsockopt(dccp_sockfd,SOL_DCCP,SO_REUSEADDR,&yes,sizeof(int)) == -1) {
    perror("setsockopt");
    exit(1); 

dccp_BUF = malloc(MAXBUFLEN* sizeof(unsigned char));

addr_len = sizeof(struct sockaddr); 
int n,bytes_read;
unsigned char *cmdframe = malloc(19);
cmdframe[18] = '\0';
create_command_frame(1,temp_pmu->pmuid,(char *)cmdframe);


if ((n = sendto(dccp_sockfd,cmdframe, 18, 0, (struct sockaddr *)&PMU_addr,sizeof(PMU_addr)) == -1)) {

    perror("sendto"); 

} else {

最佳答案

你调用的是connect()还是bind()listen()?当前的代码片段不显示这些。如果缺少这些,请尝试添加它们。为了让我们更好地帮助您,请提出问题SSCCE .

如果您的平台是 Linux,请阅读 http://www.linuxfoundation.org/collaborate/workgroups/networking/dccp特别是“DCCP 的 C 应用程序编程接口(interface)”部分。

关于c - C语言中的DCCP套接字编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17008495/

相关文章:

c - 为什么 getaddrinfo 需要 3 个 header ?

cross-platform - 如果我想在 Java、C++ 或 C# 中使用 DCCP,我有哪些替代方案?

c - 被realloc'd的指针未分配,在malloc_error_break中设置断点进行调试

c - 使用未声明的标识符 'arr'

c - 不确定为什么程序不终止

c - memcpy() 用于 3D 数组的可变维度

c - 如何在 C 中使用 send() 计算字节数,包括协议(protocol)大小?

java - Activity 套接字连接超时?