c_cpp client.c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp client.c相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>

int main(int argc, char const* argv[])
{
    struct sockaddr_in server;
    int client_socket;
    char buf[32];
    int res;

    client_socket = socket(AF_INET, SOCK_STREAM, 0);

    server.sin_family = AF_INET;
    server.sin_port = htons(18081);
    server.sin_addr.s_addr = inet_addr("127.0.0.1");

    res = connect(client_socket, (struct sockaddr *)&server, sizeof(server));
    if (res == -1) {
        printf("failed to connect\n");
        switch (errno) {
            case EBADF:
                printf("file descriptor is invalid\n");
                break;
            case EALREADY:
                printf("target socket is already used\n");
                break;
            case ETIMEDOUT:
                printf("timed out\n");
                break;
            case ECONNREFUSED:
                printf("connection refused\n");
                break;
            default:
                printf("unknown\n");
                break;
        }
        return 1;
    }

    memset(buf, 0, sizeof(buf));
    res = read(client_socket, buf, sizeof(buf));

    printf("%d, %s\n", res, buf );

    return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

int main(int argc, char const* argv[])
{
    // AF_INET IPv4を利用することを指定する
    // AF_INET6 IPv6を利用することを指定する
    int socket_descriptor;
    int client_socket;
    int res;
    struct sockaddr_in addr;
    struct sockaddr_in client;
    socklen_t client_length;

    socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);

    if (socket_descriptor == -1) {
        printf("failed to create socket\n");
        return 1;
    }

    addr.sin_family = AF_INET;
    addr.sin_port = htons(18081);
    addr.sin_addr.s_addr = INADDR_ANY;
    addr.sin_len = sizeof(addr);

    res = bind(socket_descriptor, (struct sockaddr *)&addr, sizeof(addr));
    if (res == -1) {
        printf("failed to bind\n");
        return 1;
    }

    // これからclientの接続要求を待つようにする
    res = listen(socket_descriptor, 5);
    if (res == -1) {
        printf("failed to listen\n");
        return 1;
    }

    // 接続要求を受け付ける状態にする
    client_length = sizeof(client);
    client_socket = accept(socket_descriptor, (struct sockaddr *)&client, &client_length);
    if (client_socket == -1) {
        printf("failed to accept client\n");
        return 1;
    }

    write(client_socket, "Hello, world!", 13);

    close(client_socket);

    close(socket_descriptor);

    return 0;
}

/**
 * socket関数がsocket descriptorを返す
 * socket descriptorを特定のportにbindする
 * その次どうするかな
 *
 *
 */

以上是关于c_cpp client.c的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp client_tcp_epoll.c

如何回复 D-Bus 消息

shmget 中没有这样的文件或目录错误

linux openssl 编程 Client端

Nginx 模块常用指令

c_cpp 130.周围地区