在实现基于udp协议是出现错误,纠结了一整天了,求大神指点

断章- 2016-11-11 07:28:05
出现的错误是sendto: Socket operation on non-socket


服务器端
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<sys/types.h>
5 #include<sys/socket.h>
6 #include<netinet/in.h>
7 #include<arpa/inet.h>
8 #include<unistd.h>
9
10 int main(void){
11 //1.创建socke
12 int sockfd = socket(AF_INET,SOCK_DGRAM,0);
13 if(-1 == sockfd){
14 perror("socket"),exit(-1);
15 }
16 printf("创建socket成功\n");
17
18 //2.准备通信地址,使用结构体类型
19 struct sockaddr_in addr;
20 addr.sin_family = AF_INET;
21 addr.sin_port = htons(8888);
22 addr.sin_addr.s_addr = inet_addr("192.168.159.131");
23 //3.绑定socket和通信地址
int res = bind(sockfd,(struct sockaddr*)&addr,sizeof(addr));
25 if(-1 == res) {
26 perror("bind"),exit(-1);
27 }
28 printf("绑定成功\n");
29 //4.进行通信
30 char buf[100] = {0};
31 res = recv(sockfd,buf,sizeof(buf),0);
32 if(-1 == res){
33 perror("recv"),exit(-1);
34 }
35 printf("客户端发来的数据是:%s,数据大小是:%d\n",buf,res);
36 //5.关闭socket
37 res = close(sockfd);
38 printf("成功关闭socket\n");
39 return 0;
40 }
客户端
#include<stdio.h>
3 #include<stdlib.h>
4 #include<unistd.h>
5 #include<sys/types.h>
6 #include<sys/socket.h>
7 #include<netinet/in.h>
8 #include<arpa/inet.h>
9
10 int main(void){
11 //1.创建socket,
12 int sockfd = (AF_INET,SOCK_DGRAM,0);
13 if(-1 == sockfd){
14 perror("socket"),exit(-1);
15 }
16 printf("创建socket成功\n");
17 //2.准备通信地址使用服务器地址
18 struct sockaddr_in addr;
19 addr.sin_family = AF_INET;
20 addr.sin_port = htons(8888);
21 addr.sin_addr.s_addr= inet_addr("192.168.159.131");
22 printf("地址准备完成\n");
23 //3.进行通信,

25 int res = sendto(sockfd,"hello",5,0,(struct sockaddr*)&addr,sizeof(addr) );
26
27 if(-1 == res){
28 perror("sendto"),exit(-1);
29 }
30 printf("发送数据成功\n");
31
32 //4.关闭socket
33 close(sockfd);
34 printf("关闭socket成功\n");
35 return 0;
36 }
...全文
374 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
断章- 2016-12-13
  • 打赏
  • 举报
回复
引用 3 楼 firebolt2002 的回复:
server 端 31 res = recv(sockfd,buf,sizeof(buf),0); 改为 recvfrom 或者客户端调用一下connect。具体可以网上查查看。
谢谢呐
断章- 2016-12-13
  • 打赏
  • 举报
回复
引用 2 楼 wenxy1 的回复:
12 int sockfd = (AF_INET,SOCK_DGRAM,0); //socket函数都没调用。
谢谢你
断章- 2016-12-13
  • 打赏
  • 举报
回复
引用 1 楼 mz454619501 的回复:
检查下创建成功了没? 有没有绑定成功,
绑定成功了呐
firebolt2002 2016-11-27
  • 打赏
  • 举报
回复
server 端 31 res = recv(sockfd,buf,sizeof(buf),0); 改为 recvfrom 或者客户端调用一下connect。具体可以网上查查看。
Wenxy1 2016-11-14
  • 打赏
  • 举报
回复
12 int sockfd = (AF_INET,SOCK_DGRAM,0); //socket函数都没调用。
mz454619501 2016-11-13
  • 打赏
  • 举报
回复
检查下创建成功了没? 有没有绑定成功,

23,121

社区成员

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

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