• 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;
    }
     
  • 相关阅读:
    JVM内存结构
    JVM中的类加载
    数据库索引详解
    Spring IOC 总结
    Java多线程(一)—— 常见问题整理
    Java集合框架 面试问题整理
    Java8 Lambda表达式
    vue开发技巧
    mysql(MariaDB)问题处理
    字符串非空判断的效率问题
  • 原文地址:https://www.cnblogs.com/buakaw/p/5725686.html
Copyright © 2020-2023  润新知