7.通过udp提供echo服务

来源:互联网 发布:雪姨王琳撕网络喷子 编辑:程序博客网 时间:2024/05/16 17:05

使用UDP实现的一个简单echo服务器


#include <sys/socket.h>#include <sys/types.h>#include <arpa/inet.h>#include <stdio.h>#define SERV_PORT 20000#define MAXLINE 4096void echo(int sockfd, struct sockaddr *client, socklen_t clilen){    int n;    char mesg[MAXLINE];    socklen_t len;    for(; ;)    {        len = clilen;        // 接收客户端的消息        n = recvfrom(sockfd, mesg, MAXLINE, 0, client, &len);        printf("recv: %s", mesg);        // 将来自客户端的消息发送给它        sendto(sockfd, mesg, n, 0, client, len);    }}int main(){    int sockfd;    struct sockaddr_in servaddr, cliaddr;    // 创建网际数据报套接字    sockfd = socket(AF_INET, SOCK_DGRAM, 0);    memset(&servaddr, 0, sizeof(servaddr));    servaddr.sin_family = AF_INET;    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);    servaddr.sin_port = htons(SERV_PORT);    // 绑定指定的套接字地址结构    bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));    // 主echo循环    echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));}