linux socket编程-server

来源:互联网 发布:js math 向下取整 编辑:程序博客网 时间:2024/05/01 15:11
#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>#define LETH 1024int main(){        int listenfd, connfd, pfd;        struct sockaddr_in servaddr;        char buf[LETH];        char sendmsg[LETH];        int n;        if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)        {                printf("create socket error.\n");                return -1;        }        printf("create socket.\n");        memset(&servaddr, 0, sizeof(servaddr));        servaddr.sin_family = AF_INET;        servaddr.sin_addr.s_addr = htonl(INADDR_ANY);        servaddr.sin_port = htons(6666);        if (bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)        {                printf("bind socket error.\n");                close(listenfd);                return -1;        }        printf("bind socket.\n");        if (listen(listenfd, 10) == -1)        {                printf("listen socket error.\n");                close(listenfd);        return -1;        }        printf("listen socket.\n");        while(1)        {                if ((connfd = accept(listenfd, (struct sockaddr *)NULL, NULL)) == -1)                {                        printf("accept socket error.\n");                        close(listenfd);                return -1;                }                printf("accept socket.\n");                pfd = fork();                if (pfd < 0)                {                        printf("fork error.\n");            close(listenfd);            return -1;                }               else if (pfd == 0)                {                        while(1)                        {                                n = recv(connfd, buf, LETH, 0);                        buf[n] = '\0';                        printf("recv form is %s\n");                                if (strstr(buf, "quit") != NULL)                                {                                        printf("client is quit.\n");                                        close(connfd);                                        break;                                }                                fgets(sendmsg, LETH, stdin);                                if( send(connfd, sendmsg, strlen(sendmsg), 0) < 0)                                {                                        printf("send error.\n");                                }                        }                }                else                {                        continue;                }        }        close(listenfd);}


原创粉丝点击