zoukankan      html  css  js  c++  java
  • Socket

    Socket


    一、Server

     int server_fd,client_fd;

    // 地址蔟、socket类型、通信协议
    server_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (server_fd < 0) {
    printf("socket error ");
    return -1;
    }

    struct sockaddr_in addr,clientAddr;
    bzero(&addr,sizeof(addr));

    addr.sin_family = AF_INET;
    addr.sin_port = htons(7787);
    addr.sin_addr.s_addr = INADDR_ANY; // inet_addr("127.0.0.0")

    // 地址绑定
    bind(server_fd, (struct sockaddr_in *)&addr, sizeof(struct sockaddr_in));

    // 100 最大连接数,监听连接请求--监听队列长度为 100
    listen(server_fd, 100);

    // 阻塞,直到有客户端连接
    int s_size = sizeof(struct sockaddr_in);
    client_fd = accept(server_fd, (struct sockaddr_in *)&clientAddr, &s_size);
    if (client_fd >= 0) {
    printf("connect client:%s ",inet_ntoa(clientAddr.sin_addr));
    }

    二、Client

     int fd;

    // 网络层协议: 决定抵制类型(ipv4、ipv6)AF_INET AF_INET6
    // socket类型:SOCK_STREAM SOCK_DGRAM
    // 运输层协议: IPPROTO_TCP IPPROTO_UDP
    fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (fd <= 0) {
    perror("open socket error ");
    return -1;
    }

    struct sockaddr_in addr;
    bzero(&addr,sizeof(addr));

    addr.sin_family = AF_INET;
    addr.sin_port = htons(8088);
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    // connect 成功返回0
    if (connect(fd, (struct sockaddr_in *)&addr, sizeof(addr)) < 0) {
    perror("connect error ");
    return -1;
    }
     
  • 相关阅读:
    mysql 创建数据库 添加用户 数据库授权给某用户
    Storm近年的发展
    Doris 最佳实践-Compaction调优
    pickle,struct,ujson,orjson 模块
    python用prettytable输出漂亮的表格
    nginx自定义访问日志
    事务 知识点梳理
    14
    13
    8
  • 原文地址:https://www.cnblogs.com/buakaw/p/5725686.html
Copyright © 2011-2022 走看看