📄 udp_server.c
字号:
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <errno.h>#include <stdlib.h>#include <arpa/inet.h>#include <sys/utsname.h>#include "netdb.h"#define SOCK_PORT 7838int main(int argc, char **argv){ struct sockaddr_in s_addr,s_addr1; struct sockaddr_in c_addr,c_addr1; struct hostent *host; int sock,sock1; socklen_t addr_len,addr_len1; int len; char buff[128]; int yes=1; /*create socket */ if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket"); exit(errno); } else printf("create socket.\n\r"); memset(&s_addr, 0, sizeof(struct sockaddr_in)); /*Establishment address and port information */ s_addr.sin_family = AF_INET; s_addr.sin_port = htons(SOCK_PORT); s_addr.sin_addr.s_addr = INADDR_ANY; printf("%d, %d, %d, %d\n\r", s_addr.sin_family, ntohs(s_addr.sin_port), s_addr.sin_addr.s_addr, sock); /* bind address and the port information */ if ((bind(sock, (struct sockaddr *) &s_addr, sizeof(s_addr))) == -1) { perror("bind"); exit(errno); } else printf("bind address to socket.\n\r"); /* Circulation receive data */ addr_len = sizeof(c_addr); while (1) { len = recvfrom(sock, buff, sizeof(buff) - 1, 0, (struct sockaddr *) &c_addr, &addr_len); if (len < 0) { perror("recvfrom"); exit(errno); } buff[len] = '\0'; printf("Receives from %s:%dNews:%s\n\r", inet_ntoa(c_addr.sin_addr), ntohs(c_addr.sin_port), buff); if ((sock1 = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket1"); exit(errno); } else printf("create socket1.\n\r"); memset(&s_addr1, 0, sizeof(struct sockaddr_in)); s_addr1.sin_family = AF_INET; s_addr1.sin_port = htons(SOCK_PORT-1); //s_addr1.sin_addr.s_addr =*((struct in_addr*)host->h_addr_list); memset(&c_addr1,0,sizeof(struct sockaddr_in)); c_addr1.sin_family = AF_INET; c_addr1.sin_port =htons(SOCK_PORT); c_addr1.sin_addr.s_addr = inet_addr(inet_ntoa(c_addr.sin_addr)); addr_len1 = sizeof(s_addr1); memset(buff,0x00,sizeof(buff)); strcpy(buff, "hello i'm here2 -----------\n\r"); len = sendto(sock1, buff, strlen(buff), 0, (struct sockaddr *) &c_addr1, addr_len1); if (len < 0) { printf("\n\rsend error.\n\r"); return 3; } } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -