zoukankan      html  css  js  c++  java
  • linux下简单的socket通信实例:

    服务端:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include<sys/socket.h>
    #include<sys/types.h>
    #include<stdio.h>
    #include<netinet/in.h>
    #include<arpa/inet.h>
    #include<unistd.h>
    #include<string.h>
    #include<fcntl.h>
    #include<sys/shm.h>
    #include<stdlib.h>
     
    #define port 8888
    #define queue 10
    #define buffer_size 1024
     
    int main()
    {
        //创建socket
        int server_sockfd = socket(AF_INET, SOCK_STREAM, 0),new_socket;
        struct sockaddr_in server,client;
        //监听服务器自身
        server.sin_family = AF_INET;
        server.sin_port = htons(port);
        server.sin_addr.s_addr = INADDR_ANY;
     
        //绑定socket到端口
     
        if (bind(server_sockfd, (struct sockaddr*)&server, sizeof(server)) < 0)
        {
            perror("bind");
            exit(1);
        }
        //监听socket
     
        if (listen(server_sockfd, queue) < 0)
        {
            perror("listen");
            exit(1);
        }
        //监听
        listen(server_sockfd, queue);
     
        //接受链接
        char buffer[buffer_size];
        socklen_t length = sizeof(client);
     
        int conn = accept(server_sockfd, (struct sockaddr*)&client, &length);
     
        if (conn < 0)
        {
            perror("accept");
            exit(1);
        }
     
        while (1)
        {
            memset(buffer, '0', sizeof(buffer));
     
            int len = recv(conn, buffer, sizeof(buffer), 0);//接收数据
     
            fputs(buffer, stdout);
            send(conn, buffer, len, 0);
     
        }
        close(conn);
        close(server_sockfd);
        return 0;
     
     
    }

    客户端:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include<sys/socket.h>
    #include<sys/type.h>
    #include<sys/shm.h>
    #include<netdb.h>
    #include<stdio.h>
    #include<unistd.h>
    #include<errno.h>
    #include<arpa/inet.h>
    #include<string.h>
    #include<fcntl.h>
     
    #define port 8888
    #define buffer_size 1024
     
    int main()
    {
        int sock_cli = socket(AF_INET, SOCK_STREAM, 0);
        struct sockaddr_in server;
        memset(&serever, '0', sizeof(server));
     
        server.sin_family = AF_INET;
        server.sin_port = htons(port);
        server.sin_addr.s_addr = inet_addr("127.0.0.1");
     
        if (connect(sock_cli, (struct sockaddr*)&server), sizeof(server) < 0)
        {
            perror("connect");
            exit(1);
        }
        char sendbuf[buffer_size];
        char recvbuf[buffer_size];
     
        while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)
        {
            send(sock_cli, sendbuf, strlen(sendbuf), 0);
            recv(sock_cli, recvbuf, strlen(recvbuf), 0);
            fputs(recvbuf, stdout);
            memset(sendbuf, '0', sizeof(sendbuf));
            memset(recvbuf, '0', sizeof(recvbuf));
        }
        close(sock_cli);
        return 0;
    }
  • 相关阅读:
    Shiro 集成Spring 使用 redis时 使用redisTemplate替代jedisPool(五)
    shiro 实现 网站登录记住我功能 学习记录(四)
    magento2根据属性id或code来添加options
    微信小程序-注册程序app.js
    微信小程序-目录结构
    如何在最新的PHP 7.1.0上安装和运行最新的Magento 2.1.3
    添加新的php版本到wamp中
    全局使用php
    PHP设计模式之单例模式
    SourceTree使用
  • 原文地址:https://www.cnblogs.com/yjds/p/8597348.html
Copyright © 2011-2022 走看看