linux网络编程

  1. 网络编程基础
    网络编程,首先了解计算机网络体系结构是有必要的,着重掌握TCP、IP协议,理解socket的概念,理解数据报方式和流式套接字的原理,熟练掌握相关数据结构的使用
  2. 数据报和流式套接字的工作过程

     

  3. 基本概念
    linux操作系统一切皆文件的概念在socket通信过程中体现的十分完整,通过一个文件描述符来索引一个socket,创建socket的系统调用为

     

     

    相关参数的含义可查看manual文档,其中domain比较特殊,可取下表

     


    一般我们使用的AF_INET域中的套接字地址

     

  4. 一个简单的例子
    server.c
    #include<stdio.h>
    #include<unistd.h>
    #include<arpa/inet.h>
    #include<sys/socket.h>
    #include<sys/types.h>
    #include<netinet/in.h>
    int main(){
        int server_fd, client_fd;
        int server_addr_len, client_addr_len;
        struct sockaddr_in server_addr, client_addr;
        server_addr_len = sizeof(server_addr);
        server_fd = socket(AF_INET, SOCK_STREAM, 0);
        server_addr.sin_family = AF_INET;
        server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
        server_addr.sin_port = 8000;
        bind(server_fd, (struct sockaddr *)&server_addr, server_addr_len);
        listen(server_fd, 5);
        while(1){
            printf("服务器等待消息!\n");
            char ch;
            client_addr_len = sizeof(client_addr);
            client_fd = accept(server_fd, 
                (struct sockaddr *) &client_addr, 
                (socklen_t *)&client_addr_len);
            read(client_fd, &ch, 1);
            ch++;
            write(client_fd, &ch, 1);
            close(client_fd);
        }
        return 0;
    }
    
    client.c
    #include<stdio.h>
    #include<netinet/in.h>
    #include<sys/types.h>
    #include<sys/socket.h>
    #include<unistd.h>
    #include<arpa/inet.h>
    #include<stdlib.h>
    #include<string.h>
    int main(){
        struct sockaddr_in server_addr;
        int server_add
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值