日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

下面是一個簡單的echo服務程序:

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

#define BUFFER_SIZE 1024
#define on_error(...) { fprintf(stderr, __VA_ARGS__); fflush(stderr); exit(1); }

int main(int argc, char *argv[]) {
    if (argc < 2) on_error("Usage: %s [port]n", argv[0]);
    
    int port = atoi(argv[1]);

    int server_fd, client_fd, err;
    struct sockaddr_in server, client;
    char buf[BUFFER_SIZE];

    server_fd = socket(AF_INET, SOCK_STREAM, 0);
    if (server_fd < 0) on_error("Could not create socketn");

    server.sin_family = AF_INET;
    server.sin_port = htons(port);
    server.sin_addr.s_addr = htonl(INADDR_ANY);

    int opt_val = 1;
    setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt_val, sizeof opt_val);

    err = bind(server_fd, (struct sockaddr *) &server, sizeof(server));
    if (err < 0) on_error("Could not bind socket %dn", err);

    err = listen(server_fd, 128);
    if (err < 0) on_error("Could not listen on socketn");

    printf("Server is listening on %dn", port);
    printf("Server IP address is: %sn", inet_ntoa(server.sin_addr));
    printf("Server port is: %dn", (int) ntohs(server.sin_port));

    while (1) {
        socklen_t client_len = sizeof(client);
        client_fd = accept(server_fd, (struct sockaddr *) &client, &client_len); 
        printf("get a connection %dn", client_fd);
        printf("Client IP address is: %sn", inet_ntoa(client.sin_addr));
        printf("Client port is: %dn", (int) ntohs(client.sin_port));

        if (client_fd < 0) on_error("Could not establish new connectionn");

        while (1) {
            int read = recv(client_fd, buf, BUFFER_SIZE, 0);

            if (!read) break; // done reading
            if (read < 0) on_error("Client read failedn");

            printf("server received %d bytes: %s", read, buf);

            err = send(client_fd, buf, read, 0);
            if (err < 0) on_error("Client write failedn");
        }

    }

    return 0;
}

編譯之后運行:

[root@localhost opt]# ./a.out 12345
Server is listening on 12345
Server IP address is: 0.0.0.0
Server port is: 12345

然后一般通過telnet的方式來連接測試:

$ telnet localhost 12345

還有一種測試方式,就是通過exec命令來打開一個tcp連接:

[root@localhost dev]# exec 6<>/dev/tcp/localhost/12345

執行上面的命令后,echo服務程序的日志輸出:

get a connection 4
Client IP address is: 127.0.0.1
Client port is: 46476

通過netstat命令查看TCP連接情況:

[root@localhost ~]# netstat -aonp|grep 12345
tcp        0      0 0.0.0.0:12345           0.0.0.0:*               LISTEN      2511/./a.out         off (0.00/0/0)
tcp        0      0 127.0.0.1:46476         127.0.0.1:12345         ESTABLISHED 1335/-bash           off (0.00/0/0)
tcp        0      0 127.0.0.1:12345         127.0.0.1:46476         ESTABLISHED 2511/./a.out         off (0.00/0/0)

可以看到連接已經建立。

通過下面的命令,進行寫數據:

[root@localhost dev]# echo "Write this to the socket" >&6

echo服務程序打印日志如下:

server received 25 bytes: Write this to the socket

分享到:
標簽:命令 exec
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定