【发布时间】:2013-06-05 04:48:52
【问题描述】:
我尝试在 c 中为 DCCP 协议创建套接字,它没有错误,但是当我运行程序时出现错误“sendto: Broken pipe”
我已经包含了 necesseray 标头定义。
#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 {
【问题讨论】:
-
是
IPPROTO_DCCP还是你定义的其他宏?另外,您应该在sendto周围显示代码 -
IPPROTO_DCCP 和其他宏由协议定义,我已经包含在代码的 sendto 部分上方
-
有 1.5k 代表的人可能会在这个问题中添加 DCCP 标签,即使它非常通用。