linux UDP 发送数据失败,不知道错在什么地方,请指教!!

xdman 2011-03-24 09:43:23

test.c

代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

int main()
{
int sockfd;
struct sockaddr_in addr;
int sendCount = 512;
char buf[512];
int len = 512;
char * srvIp = "127.0.0.1";
printf("run\n");

sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
{
printf("socket error!\n");
exit(1);
}

memset(&addr, 0, sizeof(addr));

inet_pton(AF_INET, srvIp, &addr.sin_addr.s_addr);
addr.sin_family = AF_INET;
addr.sin_port = htons(6000);

sendCount = sendto(sockfd, buf, 512, 0, (struct sockaddr *)&addr, len);
printf("sendCount = %d\n", sendCount);

close(sockfd);
return 1;
}


同时我的recvfrom也接收不到数据。
请各位大侠指教!!谢谢!!
...全文
385 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdman 2011-03-27
  • 打赏
  • 举报
回复
谢谢大家的关心,问题找到了,数据是收到了,只是打印语句没有加“\n”而导致没有打印出来。
justkk 2011-03-24
  • 打赏
  • 举报
回复
sendCount = sendto(sockfd, buf, 512, 0, (struct sockaddr *)&addr, len);
最后一个参数不是数据长度,而是地址长度,改为sizeof(addr)
Wenxy1 2011-03-24
  • 打赏
  • 举报
回复
注意: 一定要检查函数的返回值, 检查调用的函数是否成功执行!!!
Wenxy1 2011-03-24
  • 打赏
  • 举报
回复
你没有bind()到本机的一个网卡上.
wesleyluo 2011-03-24
  • 打赏
  • 举报
回复
你怎么知道发送失败?

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧