歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux進程間通信:TCP

Linux進程間通信:TCP

日期:2017/3/3 16:23:53   编辑:關於Linux

Client.c

#include <sys/types.h>    
#include <sys/socket.h>    
#include <stdio.h>    
#include <netinet/in.h>    
#include <arpa/inet.h>    
#include <unistd.h>    
#include <stdlib.h>    
int main()    
{    
    int sockfd;    
    int len;    
    struct sockaddr_in address;    
    int result;    
    int i,byte;    
    char char_recv,char_send;    
    if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)    
    {    
        perror("socket");    
        exit(EXIT_FAILURE);    
    }    
    address.sin_family = AF_INET;    
    address.sin_addr.s_addr = inet_addr("127.0.0.1");    
    address.sin_port = 8080;    
    len = sizeof(address);    
    if((result = connect(sockfd,(struct sockaddr *)&address,len)) == -1)    
    {    
        perror("connect");    
        exit(EXIT_FAILURE);    
    }    
         
    printf("please enter the context you want to send to server :");    
    scanf("%c",&char_send);    
         
    if(byte = send(sockfd,&char_send,1,0) == -1)    
    {    
        perror("send");    
        exit(EXIT_FAILURE);    
    }    
    if(byte = recv(sockfd,&char_recv,1,0) == -1)    
    {    
        perror("recv");    
        exit(EXIT_FAILURE);    
    }    
    printf("receive from server %c\n",char_recv);    
             
    close(sockfd);    
    exit(0);    
}

Server.c

#include <sys/types.h>    
#include <sys/socket.h>    
#include <stdio.h>    
#include <netinet/in.h>    
#include <arpa/inet.h>    
#include <unistd.h>    
#include <stdlib.h>    
char dict(char temp)    
{    
    if(temp == 'Z')    
    {    
        return 'A';    
    }    
    return temp+1;    
}    
int main()    
{    
    int server_sockfd,client_sockfd;    
    int server_len,client_len;    
    struct sockaddr_in server_address;    
    struct sockaddr_in client_address;    
    int i,btye;    
    char char_recv,char_send;    
             
    server_address.sin_family = AF_INET;    
    server_address.sin_addr.s_addr = inet_addr("127.0.0.1");    
    server_address.sin_port = 8080;    
    server_len = sizeof(server_address);    
             
    server_sockfd = socket(AF_INET,SOCK_STREAM,0);    
             
    bind(server_sockfd,(struct sockaddr *)&server_address,server_len);    
             
    listen(server_sockfd,5);    
    printf("server waiting for connect\n");    
             
    client_len = sizeof(client_address);    
    client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len);    
             
    if(btye = recv(client_sockfd,&char_recv,1,0) == -1)    
    {    
        perror("recv");    
        exit(EXIT_FAILURE);    
    }    
    printf("receive from client is %c\n",char_recv);    
    char_send = dict(char_recv);    
    if(btye = send(client_sockfd,&char_send,1,0) == -1)    
    {    
        perror("send");    
        exit(EXIT_FAILURE);    
    }    
         
    shutdown(client_sockfd,2);    
    shutdown(server_sockfd,2);     
    return 0;    
}
Copyright © Linux教程網 All Rights Reserved