TCP服务器客户端进程通信

来源:互联网 发布:多米音乐mac版下载 编辑:程序博客网 时间:2024/05/17 11:56

服务器代码

/*****************************************************copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd. File name:Author:Jerey_Jobs    Version:0.1    Date: Description:Funcion List: *****************************************************/#include <stdio.h>#include <stdlib.h>#include <netinet/in.h>#include <sys/socket.h>#include <string.h>void upper(char *msg){    while(*msg)    {        *msg =toupper(*msg);        *msg++;    }}int main(){    pid_t pid;     int listenfd,connfd;    int n;    struct sockaddr_in servaddr,cliaddr;    socklen_t client;    char msg[1000];    listenfd = socket(AF_INET,SOCK_STREAM,0);    bzero(&servaddr,sizeof(servaddr));    servaddr.sin_family = AF_INET;    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);    servaddr.sin_port = htons(8888);    bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));    listen(listenfd,1024);    for(;;)    {        client = sizeof(cliaddr);        connfd = accept(listenfd,(struct sockaddr *)&cliaddr,&client);        if(pid =fork() == 0)        {            close(listenfd);            for(;;)            {                n = recvfrom(connfd,msg,1000,0,(struct sockaddr *)&cliaddr,&client);                if(n == 0)                {                    printf("client is closed\n");                    exit(-1);                }                printf("--------------------------------------------\n");                printf("%s",msg);                printf("--------------------------------------------\n");                upper(msg);                sendto(connfd,msg,n,0,(struct sockaddr *)&cliaddr,sizeof(cliaddr));//              printf("--------------------------------------------\n");//              printf("%s",msg);//              printf("--------------------------------------------\n");            }            close(connfd);        }    }    close(listenfd);    return 0;}

客户端代码

/*****************************************************copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd. File name:Author:Jerey_Jobs    Version:0.1    Date: Description:Funcion List: *****************************************************/#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <string.h>int main(int argc,char **argv){    int sockfd;    int n;    struct sockaddr_in servaddr,cliaddr;    char sendbuf[1000];    char recvbuf[1000];    if(argc != 2)    {        printf("Usage:client <IP ADDRESS>\n");        exit(-1);    }    sockfd = socket(AF_INET,SOCK_STREAM,0);    bzero(&servaddr,sizeof(servaddr));    servaddr.sin_family = AF_INET;    servaddr.sin_addr.s_addr = inet_addr(argv[1]);    servaddr.sin_port = htons(8888);    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));    while(fgets(sendbuf,1000,stdin) != NULL)    {        sendto(sockfd,sendbuf,sizeof(sendbuf),0,(struct sockaddr *)&servaddr,sizeof(servaddr));        n = recvfrom(sockfd,recvbuf,1000,0,NULL,NULL);        recvbuf[n] = '\0';        fputs(recvbuf,stdout);    }    close(sockfd);    return 0;}
0 0
原创粉丝点击