运行时出现socket:Protocol not supported
在Ubuntu下想实现一个应用程序采用UDP报文向自身发送消息的例子,源程序(UDPPeer.c)如下:
------------------------------------
#include<stdio.h>
#include<sys/socket.h>
#include<string.h>
#include<error.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
#define SERVER_PORT 5555
int main()
{
int peerSocket;
struct sockaddr_in self_addr;
struct sockaddr_in peer_Addr;
int peer_len = sizeof(peer_Addr);
char recvbuf[1024];
char sendbuf[1024];
if((peerSocket=socket(AF_INET, SOCK_DGRAM, 1))<1){
perror("socket");
exit(1);
}
bzero(&self_addr,sizeof(self_addr));
self_addr.sin_family = AF_INET;
self_addr.sin_port = htons(SERVER_PORT);
self_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
if(bind(peerSocket, (struct sockaddr*)&self_addr,sizeof(self_addr))<0){
perror("Connect");
exit(1);
}
while(1){
printf("Input your Word:>");
scanf("%s",sendbuf);
printf("\n");
sendto(peerSocket, sendbuf, 1024, 0,(struct sockaddr*)&self_addr,sizeof(self_addr));
recvfrom(peerSocket,recvbuf,1024,0,(struct sockaddr*)&peer_Addr,(socklen_t*)&peer_len);
printf("recv from %s\n",recvbuf);
}
}
------------------------------------
编译时没有问题,运行时提示socket:Protocol not supported。
问题该如何解决?