⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udp_server.c

📁 UDP服务器端数据传输,是在LINUX下使用C语言进行编程
💻 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 + -