- 论坛徽章:
- 0
|
运行出现死循环:recvfrom(): Transport endpoint is not connected
觉得没错,但是错了
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#define SERVER_PORT 3333
#define BUFSIZE 512
int main()
{
socklen_t addrlen;
char buf[BUFSIZE];
int my_sockfd;
int types_recv;
struct sockaddr_in my_sockaddr, new_sockaddr;
my_sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (my_sockfd < 0)
{
perror("socket()" ;
exit(1);
}
my_sockaddr.sin_family = AF_INET;
my_sockaddr.sin_port = htons(SERVER_PORT);
my_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
bzero(&(my_sockaddr.sin_zero), ;
if (bind(my_sockfd, (struct sockaddr *)&my_sockaddr, sizeof(struct sockaddr_in)) < 0)
{
perror("bind()" ;
exit(1);
}
while (1)
{
addrlen = sizeof(struct sockaddr_in);
types_recv = recvfrom(my_sockfd, buf, BUFSIZE-1, 0, (struct sockaddr *)&new_sockaddr, &addrlen);
if (types_recv < 0)
{
perror("recvfrom()" ;
continue;
}
printf("Get packet from IP(%s)\n", inet_ntoa(new_sockaddr.sin_addr));
printf("packet is (%d) types long\n", types_recv);
buf[types_recv] = '\0';
printf("packet contains: \"%s\"\n", buf);
}
close(my_sockfd);
exit(0);
}
54,1 底端 |
|